【问题标题】:Displaying column values into row [duplicate]将列值显示到行中[重复]
【发布时间】:2016-05-04 17:58:36
【问题描述】:

我有一个具有以下值的表:

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

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

【问题讨论】:

标签: sql sql-server


【解决方案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

【讨论】:

  • 此答案中技术的未经授权的重复:stackoverflow.com/a/5981860/1507566
  • @TabAlleman:将 STUFF 与 FOR XML PATH 一起使用是字符串连接中创建逗号分隔格式的常用模式。此外,我只使用了我的old answer。不同意您的反对票。
  • 与其回答已经在本网站上提出和回答的问题,我们应该将新提问者引导至重复的问题,而不是用更多的重复问题使网站混乱。您自己已经回答了这个问题并重复了自己的答案,这只会加强我的观点。
  • @TabAlleman - 但不值得反对
  • @Prdp 有赞同你的也有赞同我的:meta.stackoverflow.com/questions/322096/…
猜你喜欢
  • 2022-09-27
  • 2021-09-07
  • 1970-01-01
  • 1970-01-01
  • 2020-12-07
  • 2021-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多