如何使用sql server将列数据切换为行数据

时间:2013-07-12 07:25:26

标签: sql sql-server

我有一张像这样的表:

ID   value
3      1
3      2
3      3
3      4
3      5
3      6

任何人都可以帮我将此表转换为格式:

ID  Value
3   1,2,3,4,5,6

1 个答案:

答案 0 :(得分:1)

select distinct id, 
stuff((select (','+[value]) from Table1 as t2 where t1.id=t2.id 
for xml path('')),1,1,'') as [values]
from 
    Table1 as t1  

SQLFIDDLE

PS:在示例方案中,值为varchar()类型,如果需要,您需要将数字转换为varchar()。
在Sql Server中有很多变体来制作group_concat,只是另一种使用汇编的方式:GROUP_CONCAT string aggregate for SQL Server。我觉得工作非常好。
COALESCE

的另一种方式
DECLARE @values varchar(100)

SELECT @values = COALESCE(@values + ', ', '') + [value]
FROM Table1

SELECT @values  

SQLFIDDLE