복붙노트

[SQL] SQL 쿼리는 SQL Server의 열을 기준으로 그룹과 함께 쉼표 구분에 집계 된 결과를 얻을 수 있습니다

SQL

SQL 쿼리는 SQL Server의 열을 기준으로 그룹과 함께 쉼표 구분에 집계 된 결과를 얻을 수 있습니다

나는 결과가 쉼표 구분에 집계 된 컬럼과 함께 열을 기준으로 그룹을 것 같은 것을 테이블에 SQL 쿼리를 작성해야합니다.

내 표는 아래 형식에있을 것입니다

   |`````````|````````|
   |    ID   |  Value |
   |_________|________|
   |    1    |   a    |
   |_________|________|
   |    1    |   b    |
   |_________|________|
   |    2    |   c    |
   |_________|________|

예상 결과는 다음 형식이어야합니다

   |`````````|````````|
   |    ID   |  Value |
   |_________|________|
   |    1    |  a,b   |
   |_________|________|
   |    2    |   c    |
   |_________|________|

해결법

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

    1.당신은 XML의 PATH 구조에 사용할 :

    당신은 XML의 PATH 구조에 사용할 :

    select 
        ID, 
        stuff((select ', ' + Value 
               from YourTable t2 where t1.ID = t2.ID 
               for xml path('')),
              1,2,'') [Values]
    from YourTable t1
    group by ID
    

    물건 기능 ','최고의 제거하는 것입니다.

    또한 다른 예를 여기에서 볼 수 있습니다 :

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

    2.그냥 균형을보기 위해, 당신은 또한 CTE 만이 할 수있는 그 십자가는 내가 생각하지 않는 방법을 적용 할 때 좋지한다. 이 작업을하지 않는 경우 나는 사과 있도록 발굽이 코딩했습니다.

    그냥 균형을보기 위해, 당신은 또한 CTE 만이 할 수있는 그 십자가는 내가 생각하지 않는 방법을 적용 할 때 좋지한다. 이 작업을하지 않는 경우 나는 사과 있도록 발굽이 코딩했습니다.

    WITH CommaDelimitedCTE (RowNumber,ID,[Value],[Values]) AS
    (
      SELECT 1,MT.ID , MIN(MT.Value), CAST(MIN(MT.Value) AS VARCHAR(8000)) 
      FROM  MyTable MT
      GROUP BY MT.ID
    
      UNION ALL
    
      SELECT CT.RowNumber + 1, MT.ID, MT.Value, CT.[Values] + ', ' + MT.Value
      FROM  MyTable MT
      INNER JOIN CommaDelimitedCTE CT ON CT.ID = MT.ID
      WHERE MT.[Value] > CT.[Value]
    )
    
    Select CommaDelimitedCTE.* from CommaDelimitedCTE 
        INNER JOIN (SELECT MT.ID,MAX(RowNumber) as MaxRowNumber from CommaDelimitedCTE GROUP BY MT.ID) Q on Q.MT.ID = CommaDelimitedCTE.MT.ID
        AND Q.MaxRowNumber = CommaDelimitedCTE.RowNumber
    
  3. from https://stackoverflow.com/questions/6344950/sql-query-to-get-aggregated-result-in-comma-separators-along-with-group-by-colum by cc-by-sa and MIT license