SQL:将字符串聚合在一起

Luk*_*uke 14 sql sql-server-2005

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

UserID        Code
  1            A
  1            C5
  1            X
  2            V3
  3            B
  3            D
  3            NULL
  3            F4
  4            NULL
Run Code Online (Sandbox Code Playgroud)

我得到:

 UserID        Code
  1            A,C5,X
  2            V3
  3            B,D,F4
  4            NULL
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Luc*_*ero 17

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
Run Code Online (Sandbox Code Playgroud)

只需Data用您的表名替换CTE就可以了.

  • 我认为-1会引起你的注意:)实际上没有通过投票.+1 (2认同)