小编典典

在SQL Server的聚合查询中串联字符串列中的值

sql

在我的SQL Server 2005数据库中,使用SLQ查询,是否有人知道将记录按一个字段分组并从另一个字段以逗号分隔的值列表的最佳方法?
所以,如果我有:

UserID        Code
  1            A
  1            C5
  1            X
  2            V3
  3            B
  3            D
  3            NULL
  3            F4
  4            NULL

我会得到:

 UserID        Code
  1            A,C5,X
  2            V3
  3            B,D,F4
  4            NULL

谢谢你的帮助。


阅读 156

收藏
2021-04-22

共1个答案

小编典典

WITH Data AS (
    SELECT 1 UserId, 'A' Code 
    UNION ALL 
    SELECT 1, 'C5'
    UNION ALL 
    SELECT 1, 'X'
    UNION ALL 
    SELECT 2, 'V3'
    UNION ALL 
    SELECT 3, 'B'
    UNION ALL 
    SELECT 3, 'D'
    UNION ALL 
    SELECT 3, NULL
    UNION ALL 
    SELECT 3, 'F4'
    UNION ALL 
    SELECT 4, NULL
)
SELECT U.UserId, STUFF((
    SELECT ','+Code FROM Data WHERE Data.UserID = U.UserID FOR XML PATH('')
), 1, 1, '') Code 
FROM (SELECT DISTINCT UserID FROM Data) U

只需将DataCTE替换为您的表名就可以了。

2021-04-22