GROUP CONCAT은 그룹핑된 여러 레코드의 값을 하나로 결합해 보여주는 아주 특별한 집계함수다.
-- [SQL-5-7-1] 하나의 셀에는 하나의 값
SELECT T1.ItemCat ,T1.ItemId ,T1.ItemNm
FROM startdb.Item T1
WHERE T1.ItemCat IN ('BEV','BKR')
AND T1.LaunchDt = STR_TO_DATE('20190101','%Y%m%d')
ORDER BY T1.ItemCat ,T1.ItemId;
ItemCat ItemId ItemNm
------- ------ -------------------
BEV HCHB Hot Chocolate(B)
BEV HCHR Hot Chocolate(R)
BEV LEMR Lemonade(R)
BKR BGLR Bagel(R)
BKR BMFR Blueberry Muffin(R)
BKR CMFR Chocolate Muffin(R)
-- [SQL-5-7-2] GROUP BY와 GROUP_CONCAT 적용 SQL
SELECT T1.ItemCat ,GROUP_CONCAT(T1.ItemNm) ItemList
FROM startdb.Item T1
WHERE T1.ItemCat IN ('BEV','BKR')
AND T1.LaunchDt = STR_TO_DATE('20190101','%Y%m%d')
GROUP BY T1.ItemCat;
ItemCat ItemList
------- ------------------------------------------------
BEV Hot Chocolate(B),Hot Chocolate(R),Lemonade(R)
BKR Bagel(R),Blueberry Muffin(R),Chocolate Muffin(R)

아래와 같이 GROUP_CONCAT안에 여러 컬럼을 사용할 수도 있다.
-- [SQL-5-7-3]
SELECT T1.ItemCat ,GROUP_CONCAT(T1.ItemNm,'(',T1.ItemId,')') ItemList
FROM startdb.Item T1
WHERE T1.ItemCat IN ('BEV','BKR')
AND T1.LaunchDt = STR_TO_DATE('20190101','%Y%m%d')
GROUP BY T1.ItemCat;
ItemCat ItemList
------- ------------------------------------------------------------------
BEV Hot Chocolate(B)(HCHB),Hot Chocolate(R)(HCHR),Lemonade(R)(LEMR)
BKR Bagel(R)(BGLR),Blueberry Muffin(R)(BMFR),Chocolate Muffin(R)(CMFR)
Next: 5-8. DISTINCT
Upper: 5. GROUP BY
