Подтвердить что ты не робот

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

Спасибо за любую помощь.

4b9b3361

Ответ 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

Просто замените Data CTE своим именем таблицы, и все готово.