例如我们有一个三列的表
Column A | Column B | Column C
-------------------------------
P1 | 10 | A
P1 | 20 | B
P1 | 30 | C
P2 | 30 | D
P2 | 40 | E
我要如何在 Microsoft SQL 中编写 SELECT 查询才能得到这种结果
Column A | Column B | Column C
------------------------------------------
P1 | 10, 20, 30 | A, B, C
P2 | 30, 40 | D, E
最佳答案
试试这个
CREATE TABLE #temp(ColumnA VARCHAR(10),ColumnB INT ,ColumnC VARCHAR(10))
--insert rows
SELECT t.[ColumnA] ,
[ColumnB] = STUFF((SELECT ','+cast([ColumnB] AS VARCHAR ) FROM #Temp WHERE [ColumnA] = t.[ColumnA] FOR XML PATH('')),1,1,''),
[ColumnC] = STUFF((SELECT ','+[ColumnC] FROM #Temp WHERE [ColumnA] = t.[ColumnA] FOR XML PATH('')),1,1,'')
FROM #Temp t
GROUP BY t.[ColumnA]
我测试一下
关于sql - 如何在 Microsoft SQL 中将一列中的字符串汇总为一行?分组依据不起作用,因为它是 MSSQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47689303/