我有一张桌子,看起来像:
ID-----Name-----Version
1 | TestX | 1.2
2 | TestX | 1.2
3 | TestX | 1.2
4 | TestX | 1.3
5 | TestX | 1.3
我需要根据名称和版本进行查询,结果如下:
ID-----Name-----Version
1,2,3 | TestX | 1.2
4,5 | TestX | 1.3
我无法弄清楚如何使concat正常工作。
答案 0 :(得分:0)
您可以使用FOR XML PATH()
:
SELECT DISTINCT STUFF(tt.id, 1, 1, '') AS ID, t.Name, t.Version
FROM table t CROSS APPLY
(SELECT ', ' + t1.id
FROM table t1
WHERE t1.Name = t.Name AND t1.version = t.Version
FOR XML PATH('')
) tt(id);
如果您正在使用SQL Server
的最新版本,则可以使用STRING_AGG():
SELECT STRING_AGG(ID, ', ') as ID, Name, Version
FROM table t
GROUP BU Name, Version;