메모장
PostgreSQL 행 합치기 (Oracle WM_CONCAT 같은 기능) 본문
GROUP BY로 정렬한 후 집계함수를 통해 테이블을 정리하곤 하는데 일반 SUM이나 COUNT가 아니라 문자열을 합치고 싶었다.
예를 들어,
(열 이름은 무시)
위와 같은 테이블을 GROUP BY를 사용한 후 king_nm을 콤마로 구분하여
위와 같이 문자열을 합치고 싶었다.
오라클에선 WM_CONCAT이라는 함수를 통해 간단하게 구현 가능하나 PostgreSQL에서는 어떤 함수를 써야할지 감이 안잡혔다.
결국은 구글링을 통해 찾아냈다.
먼저 Oracle 일 때,
SELECT country, WM_CONCAT(king_nm)
FROM test_tb
GROUP BY country
PostgreSQL일 때,
SELECT country, ARRAY_TO_STRING(ARRAY_AGG(king_nm),',')
FROM test_tb
GROUP BY country;
오라클과 완전히 동일하게 하려면
ARRAY_AGG(king_nm) 부분을 ARRAY_AGG(king_nm ORDER BY country)로 수정하면 결과가 완전히 똑같아진다고 한다.
'DB(SQL)' 카테고리의 다른 글
SQL 테이블 복사 및 데이터 이동 (0) | 2016.08.02 |
---|
Comments