postgresql 컬럼을 세로로 변경을 하고 싶습니다. 0 3 1,287

by 마르스헤븐 [SQL Query] [2022.08.19 08:42:05]


안녕하세요. 날이 아직 많이 무덥네요. 도저히 생각이 나지 않아 질문을 드립니다.

postgresql 컬럼을 세로로 변경을 하고 싶은데 잘되지 않습니다.

쿼리문을 실행하면 아래와 같이 나오는데 컬럼을 세로로 하고 싶은데 어떻게 해야 할까요? 

디비 버전은 PostgreSQL 10.7 입니다. 

항상 감사드립니다.

signDate name firstName
20220819 대리 김철수
20220819 부장 김광수

-------------세로로 변경 ------

signDate 20220819 20220819
name 대리 부장
firstName 김철수 김광수

 

by 마농 [2022.08.19 09:47:36]
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
;

 


by 마르스헤븐 [2022.08.19 10:00:04]

 늘 감사합니다. 마농님 오늘 하루도 행복한 날 되세요


by 마농 [2022.08.19 10:18:08]
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
;

 

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입