2014-03-31 42 views
0

我一直負責創建需要從另一個表中引入多達10條記錄的視圖。問題是這個表可能有0,5,10或更多的相應記錄。1到許多SQL連接查看連接表可能有0條記錄

這裏是很簡單的設計,只包括什麼是相關

SalesOrderTable  OutsideSalesRepTable  SalesRepTable 
    OrderID    BranchID     SalesRepID 
    CustID    CustID     SalesRepName 
    BranchID    SalesRepID 

第一個連接需要在BranchID & SalesOrderTable和OutsideSalesRepTable之間的CustID 第二加入需要是OutsideSalesRepTable和SalesRepTable之間的SalesRepID

該視圖需要列出列爲OutsideSalesRep1,OutsideSalesRep2,... OutsideSalesRep10並填寫SalesRepName。我無法控制這個數據庫的設計。我寧願在客戶表中看到10個專用於SalesRepID的字段,而只使用左連接。

如果只有3 OutsideSalesReps exsit爲分公司/客戶比OutsideSalesRep4-10爲空

這是165列/ 35+表視圖我沒能找出的唯一部分。

任何幫助將真誠讚賞。

PS我對TSQL是半新鮮的。只用了大約6個月。

編輯:我鏈接到一個圖像,顯示源數據的樣本來協助(我希望)解釋我在找什麼。 數據透視表需要顯示

SONum OutsideRep1 OutsideRep2 OutsideRep3 ..... Outside Rep10 
    5819 59   69   70   null null  
    5821 59   70   null  null null 

http://www.bayernsupport.com/SQL.png

+0

你需要一個[支點查詢](HTTP://的TechNet 。microsoft.com/en-us/library/ms177410%28v=sql.105%29.aspx),因爲您試圖將salesrep表中的單個列轉換爲查詢結果中的多個列。 –

+0

所以我嘗試了這種方法幾種不同的方式,這可能是我的無知,但我不能以我需要的方式得到一個查詢樞軸。 我可以得到它樞軸如果我指定SalesRepName或ID在樞軸的「IN」子句中,但我不會知道這些值是什麼。 –

回答

0

得到它與一個朋友的援助工作。它確實需要一個數據透視表,但它也需要一個有趣的查詢作爲數據源,請記住下面的字段名稱並不完全匹配,但結構和最終結果已死亡。

SELECT * FROM ( SELECT so.OrderID, so.OrderName, sr.SalesRepName, 'SalesRep的_' + CAST(ROW_NUMBER()OVER(PARTITION BY ORDERNAME ORDER BY SalesRepName)AS VARCHAR(30) )RN FROM @SalesOrderTable所以 JOIN @OutsideSalesRepTable OSP ON so.BranchID = osp.BranchID和so.CustID = osp.CustID JOIN @SalesRepTable SR ON osp.SalesRepID = sr.SalesRepID

)SRC PIVOT (
MAX(SalesRepName) 的RN用在(SalesRep_1,SalesRep_2,SalesRep_3,SalesRep_4,SalesRep_5, SalesRep_6,SalesRep_7,SalesRep_8,SalesRep_9,SalesRep_10) )PIV