【问题标题】:sql concatenate multiple values [duplicate]sql连接多个值[重复]
【发布时间】:2013-04-01 18:50:20
【问题描述】:

我在 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 修改后的代码有效,非常感谢。

【问题讨论】:

标签: sql sql-server-2008 concatenation distinct


【解决方案1】:

请尝试:

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了解更多详情。

【讨论】:

  • 此代码返回每个 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
  • Column1 上添加where 条件。请检查编辑后的答案。
  • 我只有一张桌子。
  • 我让它工作了,谢谢 techdo。但是使用 t1 和 t2 有点令人困惑,因为我只有一张桌子。
  • t1t2 是为您的表指定的别名。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-03-07
  • 2013-07-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-07
相关资源
最近更新 更多