将列值显示为行

时间:2016-05-04 17:58:36

标签: sql sql-server

我的桌子有以下值:

case code id
100   A10  1
100   A11  2
100   A12  3
101   A11  4
102   A10  5

我需要编写一个查询来获得以下输出:

case code
100  A10, A11, A12
101  A11
102  A10

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:-1)

使用STUFF可以获得预期的结果

DECLARE @Test Table([case] int, [code] varchar(20))
INSERT @Test([case],[code])
VALUES
(100,'A10'), (100,'A11'),
(100,'A12'), (101,'A11'), (102, 'A10')

SELECT DISTINCT [case],
STUFF((SELECT ', '+ code
       FROM @Test T1
       WHERE T1.[case] = T2.[case]
       FOR XML PATH('')), 1, 1,''
     ) AS code 
FROM @Test T2