我有一个父表
ID Name
1 abc
2 def
和子表
ID LineId Item
1 1 A001
1 2 A002
2 1 B001
2 2 B002
子表中的ID是父表中的外键,ID和LineId构成子表中的主键。
我想根据' ID'加入这两个表格。从父表和子表生成一个平面结果,来自具有相同外键的子表的行成为列,如下所示:
ID Name Item1 Item2 .....
1 abc A001 A002
2 def B001 B002
答案 0 :(得分:0)
您需要像这样使用动态SQL:
DECLARE @sql nvarchar(max) = 'SELECT p.ID, p.Name';
SELECT @sql = @sql + ',MAX(CASE WHEN c.LineId = ' + CAST(LineId as nvarchar(5)) + ' THEN c.Item END) As Item' + CAST(LineId as nvarchar(5))
FROM childTable
GROUP BY LineId;
SET @sql = @sql + ' FROM parentTable p JOIN childTable c ON p.ID = c.ID GROUP BY p.ID, p.Name';
EXEC(@sql);