복붙노트

[SQL] SQL Server에 대한 그룹화 된 문자열 집계 / LISTAGG

SQL

SQL Server에 대한 그룹화 된 문자열 집계 / LISTAGG

나는 확실히이 요청 된거야하지만 난 꽤 바로 검색어를 찾을 수 없습니다.

이 같은 스키마를 감안할 때 :

| CarMakeID | CarMake
------------------------
|         1 | SuperCars
|         2 | MehCars

| CarMakeID | CarModelID | CarModel
-----------------------------------------
|         1 |          1 | Zoom
|         2 |          1 | Wow
|         3 |          1 | Awesome
|         4 |          2 | Mediocrity
|         5 |          2 | YoureSettling

이 같은 데이터 세트를 생성하려면 :

| CarMakeID | CarMake   | CarModels
---------------------------------------------
|         1 | SuperCars | Zoom, Wow, Awesome
|         2 | MehCars   | Mediocrity, YoureSettling

나는 다음과 같은 스타일의 쿼리 SQL Server의 문자열을 'AGG'대신에 어떻게해야합니까?

SELECT *, 
 (SELECT AGG(CarModel) 
  FROM CarModels model
  WHERE model.CarMakeID = make.CarMakeID
  GROUP BY make.CarMakeID) as CarMakes
FROM CarMakes make

해결법

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

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

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

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

    2.그것은 SQL 서버 2017 또는 SQL Server VNext, 아래로 String_agg을 사용할 수 있습니다 푸른 SQL 데이터베이스의 경우 :

    그것은 SQL 서버 2017 또는 SQL Server VNext, 아래로 String_agg을 사용할 수 있습니다 푸른 SQL 데이터베이스의 경우 :

    SELECT  make.CarMakeId, make.CarMake, 
            CarModels = string_agg(model.CarModel, ', ') 
    FROM CarModels model
        INNER JOIN CarMakes make 
        ON model.CarMakeId = make.CarMakeId
    GROUP BY make.CarMakeId, make.CarMake
    

    산출:

    +-----------+-----------+---------------------------+
    | CarMakeId |  CarMake  |         CarModels         |
    +-----------+-----------+---------------------------+
    |         1 | SuperCars | Zoom, Wow, Awesome        |
    |         2 | MehCars   | Mediocrity, YoureSettling |
    +-----------+-----------+---------------------------+
    
  3. from https://stackoverflow.com/questions/3368942/grouped-string-aggregation-listagg-for-sql-server by cc-by-sa and MIT license