설문조사
PostgreSQL/PPAS 관련 듣고 싶은 교육은


총 게시물 94건, 최근 0 건
   

종열을 횡열으로 바꾸기

글쓴이 : PostgresDBA 날짜 : 2012-12-09 (일) 20:07 조회 : 17941
오라클 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