설문조사
PostgreSQL/PPAS 관련 듣고 싶은 교육은
결과보기
EnterpriseDB
총 게시물 95건
목록 글쓰기 이전글 다음글

종열을 횡열으로 바꾸기

글쓴이 : PostgresDBA   날짜 : 2012-12-09 (일) 20:07   조회 : 22173 인쇄
오라클 11g 부터 LISTAGG 함수를 이용하여 특정 컬럼을 횡으로 아래와 같이 나열할수 있습니다.

SELECT DEPTNO, LISTAGG(ENAME,',') WITHIN GROUP (ORDER BY DEPTNO) FROM SCOTT.EMP GROUP BY DEPTNO;

---  -----------------------------------------
10    CLARK,KING,MILLER
20    ADAMS,FORD,JONES,SCOTT,SMITH
30    ALLEN,BLAKE,JAMES,MARTIN,TURNER,WARD

PostgreSQL 에서는 어떻게 구현해야 할까요?

scott@[local]:5432 scottdb#SQL> SELECT DEPTNO, ARRAY_TO_STRING(ARRAY_AGG(ENAME),',') FROM EMP GROUP BY DEPTNO;
 deptno |           array_to_string            
--------+--------------------------------------
        10 | CLARK,KING,MILLER
        20 | SMITH,JONES,SCOTT,ADAMS,FORD
        30 | ALLEN,WARD,MARTIN,BLAKE,TURNER,JAMES
(3 rows)

Time: 27.145 ms
scott@[local]:5432 scottdb#SQL> 

PostgreSQL 정말 좋네요.

댓글목록

PostgresDBA 2014-03-25 (화) 23:21
오라클과 완전히 동일하게 하려면,
ARRAY_AGG(ENAME) 부분을 ARRAY_AGG(ENAME ORDER BY DEPTNO) 로 수정해야 결과가 완전히 똑같게 되겠네요.
PostgresDBA 2016-10-10 (월) 13:07
SELECT tablename, attname, inherited, n_distinct,
      array_to_string(most_common_vals, E'\n') as most_common_vals
FROM pg_stats
목록 글쓰기 이전글 다음글

postgresdba.com