sql连接多个值

时间:2013-04-10 04:53:35

标签: sql sql-server-2008 concatenation distinct

我在SQL Server 2008中设计了一个视图,以这种格式显示2列不同的数据:

Column1 Column2
A       Text1
B       Text2
B       Text3
C       Text4
D       Text5
D       Text6
D       Text7
E       Text8

我需要做些什么才能使视图只显示不同的Column1值,其中Column2值连接如下:

Column1 Column2
A       Text1
B       Text2, Text3
C       Text4
D       Text5, Text6, Text7
E       Text8

如果我使用答案中建议的代码,你似乎认为这个问题是重复的,那么我会得到这样的结果:

Column1 Column2
A       Text1,Text2,Text3,Text4,Text5,Text6,Text7,Text8
B       Text1,Text2,Text3,Text4,Text5,Text6,Text7,Text8
C       Text1,Text2,Text3,Text4,Text5,Text6,Text7,Text8
D       Text1,Text2,Text3,Text4,Text5,Text6,Text7,Text8
E       Text1,Text2,Text3,Text4,Text5,Text6,Text7,Text8

编辑:@techdo的修改后的代码很有效,非常感谢。

1 个答案:

答案 0 :(得分:2)

请尝试:

SELECT
    Column1,
    STUFF(
    (SELECT ',' + Column2
       FROM YourTable t2
        WHERE t2.Column1=t1.Column1
        FOR XML PATH(''),type).value('.','nvarchar(max)'), 1, 1, '') AS Column2
FROM
    YourTable t1
GROUP BY Column1

查看LINK了解详情。