복붙노트

[SQL] SQL : 집계 문자열 함께

SQL

SQL : 집계 문자열 함께

SQL 쿼리를 사용하여 내 SQL Server 2005 데이터베이스에서, 사람이 함께 하나 개의 필드에 의해 그룹의 기록에 가장 좋은 방법을 알고, 서로 값의 쉼표로 구분 된 목록을 얻을 수 있습니까? 그래서 만약 내가 가진 :

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

어떤 도움을 주셔서 감사합니다.

해결법

  1. ==============================

    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
    

    그냥 테이블 이름으로 데이터 CTE를 교체하면됩니다.

  2. ==============================

    2.형태의 읽어라의 완전한 검토는 SQL에 그이해야 할 일

    형태의 읽어라의 완전한 검토는 SQL에 그이해야 할 일

    http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/

  3. from https://stackoverflow.com/questions/5452681/sql-aggregating-strings-together by cc-by-sa and MIT license