首先,我看了this,我的问题有所不同 - 尽管有些不同。此外,我尝试了这种方法并尝试修改它以适合我,但没有骰子。
问题:
从几个查询的结果中我得到以下结果:
ID | NAME | DESCID | TALL | GOODLOOKING | FAT
_______________________________________________________________
1 | John | 1 | '1.8m' | Null | Null
1 | John | 2 | Null | 'Yes' | Null
1 | John | 3 | Null | Null | '84kg'
1 | John | 4 | Null | Null | '85kg'
注意:只是一些虚拟数据BTW。
我需要输出如下:
ID | NAME | TALL | GOODLOOKING | FAT
__________________________________________________________
1 | John | '1.8m' | 'Yes' | '84kg|85kg'
如果这不可能,我会很高兴知道这一点,所以请随时告诉我。
任何帮助SQL传奇?
答案 0 :(得分:3)
SQL Server中没有像Group_Concat
这样的东西可以直接使用。您可以在相关查询中使用FOR XML
SELECT ID,NAME,
STUFF((SELECT '|'+TALL FROM Tbl1 t2 WHERE t2.ID = t1.ID AND t2.NAME = t1.NAME ORDER BY t2.descid FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)'),1,1,'') as tall,
STUFF((SELECT '|'+GOODLOOKING FROM Tbl1 t2 WHERE t2.ID = t1.ID AND t2.NAME = t1.NAME ORDER BY t2.descid FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)'),1,1,'') as GOODLOOKING,
STUFF((SELECT '|'+FAT FROM Tbl1 t2 WHERE t2.ID = t1.ID AND t2.NAME = t1.NAME ORDER BY t2.descid FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)'),1,1,'') as FAT
FROM Tbl1 t1
GROUP BY ID,NAME