2013-12-21 33 views
-1

我有以下兩種表轉換行到列SQL基於PK FK關係

tblPlan

ID | Name 
------------ 
1 | A 
2 | B 
3 | C 

tblDetails

ID | PlanID | R | C | Type 
----------------------------------------- 
1 | 1  | 1 | 2 | X 
2 | 1  | 1 | 2 | M 
3 | 1  | 2 | 5 | L 
4 | 2  | 3 | 3 | X 
5 | 2  | 4 | 4 | L 
6 | 3  | 1 | c | X 

tblDetails.PlanId(fk) = tblPlan.ID(Pk) 

現在我要像下面的輸出

Plan.ID,Plan.Name Type R C Type R C Type R C ... 

1 A X 1 2 M 1 2 L 2 5 
2 B X 3 3    L 3 4 
3 C X 1 1 

基於關係

我想爲每個plan.how做一個單獨的行嗎?任何人的幫助是非常感謝?

+0

你詢問如何進行加入? – mtanti

+0

或者你想要每行的tblPlan的行和所有的細節在同一行的不同領域? – mtanti

+0

我想爲每個tblPlan行一行,並在同一行的不同字段中的所有細節.details表中有幾行的PlanID與tblPlan ID相同。 1 A X 1 2 M 1 2 L 2 5 2 B X 3 3 L 3 4 3 C X 1 1 – decoder

回答

1

在由單一查詢單獨的列中似乎不可能的,但你可以在逗號分隔值計劃的詳細信息在單柱像這樣

select Id, 
     Name, 
     STUFF((SELECT ',' + [Type] + ',' + CAST(R AS VARCHAR(1)) + ',' + C 
       FROM tblDetails 
       WHERE PlanID = P.Id 
       FOR XML PATH ('')) 
     , 1, 1, '') AS PlanDetail 
from tblPlan P 

輸出:

Id  Name PlanDetail 
1  A  X,1,2,M,1,2,L,2,5 
2  B  X,3,3,L,3,4 
3  C  X,1,c