안녕하세요. 날이 아직 많이 무덥네요. 도저히 생각이 나지 않아 질문을 드립니다.
postgresql 컬럼을 세로로 변경을 하고 싶은데 잘되지 않습니다.
쿼리문을 실행하면 아래와 같이 나오는데 컬럼을 세로로 하고 싶은데 어떻게 해야 할까요?
디비 버전은 PostgreSQL 10.7 입니다.
항상 감사드립니다.
signDate | name | firstName |
20220819 | 대리 | 김철수 |
20220819 | 부장 | 김광수 |
-------------세로로 변경 ------
signDate | 20220819 | 20220819 |
name | 대리 | 부장 |
firstName | 김철수 | 김광수 |
WITH t AS ( SELECT 1 seq, '20220819' signDate, '대리' name_, '김철수' firstName UNION ALL SELECT 2, '20220819', '부장', '김광수' ) SELECT gb , MIN(CASE seq WHEN 1 THEN v END) v1 , MIN(CASE seq WHEN 2 THEN v END) v2 , MIN(CASE seq WHEN 3 THEN v END) v3 FROM (SELECT lv , seq , CASE lv WHEN 1 THEN 'signDate' WHEN 2 THEN 'name_' WHEN 3 THEN 'firstName' END gb , CASE lv WHEN 1 THEN signDate WHEN 2 THEN name_ WHEN 3 THEN firstName END v FROM t , generate_series(1, 3) lv ) a GROUP BY lv, gb ORDER BY lv ;
WITH t AS ( SELECT 1 seq, '20220819' signDate, '대리' name_, '김철수' firstName UNION ALL SELECT 2, '20220819', '부장', '김광수' ) SELECT UNNEST(STRING_TO_ARRAY('signDate,name_,firstName', ',')) gb , UNNEST(MIN(CASE seq WHEN 1 THEN a1 END)) v1 , UNNEST(MIN(CASE seq WHEN 2 THEN a1 END)) v2 , UNNEST(MIN(CASE seq WHEN 3 THEN a1 END)) v3 FROM (SELECT seq , STRING_TO_ARRAY(signDate ||','|| name_ ||','|| firstName, ',') a1 FROM t ) a ;