我有以下两个表
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
基于关系
我想为每个计划提供一行。如何做到这一点?非常感谢任何帮助?
答案 0 :(得分: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