안녕하세요 행을 열로 변경을 하고 싶습니다. 0 2 1,720

by 마르스헤븐 [SQL Query] [2023.08.14 09:00:44]


안녕하세요. 날씨가 조금 덜더워진것 같네요.  궁금한점이 있어 문의 드립니다.

오라클 버전은 Oracle Database 12c Release 12.1.0.1.0을 사용하고 있습니다. 

아래는 셀렉트한 쿼리 입니다. 이 쿼리의 내역을 행을 열로 변경을 하고 싶은데 어떻게 해야 할지 잘모르겠습니다. 가르침을 주시면 정말 감사하겠습니다.

코드 부서 날짜 금액
1 a 2023/05 39656908
1 a 2023/06 43023696
2 b 2023/05 12730645
2 b 2023/06 15006818
3 c 2023/05 2843196
3 c 2023/06 2875712

 

행을 열로 변경

코드 부서 날짜 금액 코드 부서 날짜 금액 코드 부서 날짜 금액
1 a 2023/05 39656908 2 b 2023/05 12730645 3 c 2023/05 2843196
1 a 2023/06 43023696 2 b 2023/06 15006818 3 c 2023/06 2875712

 

여름 감기 조심하시고 항상 건강하세요.

감사합니다.

 

 

by 마농 [2023.08.16 00:00:56]
WITH t AS
(
SELECT 1 cd, 'a' dept, '2023/05' dt, 39656908 amt FROM dual
UNION ALL SELECT 1, 'a', '2023/06', 43023696 FROM dual
UNION ALL SELECT 2, 'b', '2023/05', 12730645 FROM dual
UNION ALL SELECT 2, 'b', '2023/06', 15006818 FROM dual
UNION ALL SELECT 3, 'c', '2023/05',  2843196 FROM dual
UNION ALL SELECT 3, 'c', '2023/06',  2875712 FROM dual
)
SELECT dt
     , MIN(DECODE(cd, 1, cd  ))   cd_1
     , MIN(DECODE(cd, 1, dept)) dept_1
     , MIN(DECODE(cd, 1, amt ))  amt_1
     , MIN(DECODE(cd, 2, cd  ))   cd_2
     , MIN(DECODE(cd, 2, dept)) dept_2
     , MIN(DECODE(cd, 2, amt ))  amt_2
     , MIN(DECODE(cd, 3, cd  ))   cd_3
     , MIN(DECODE(cd, 3, dept)) dept_3
     , MIN(DECODE(cd, 3, amt ))  amt_3
  FROM t
 WHERE cd IN (1, 2, 3)
   AND dt IN ('2023/05', '2023/06')
 GROUP BY dt
 ORDER BY dt
;

 


by 마르스헤븐 [2023.08.16 09:45:08]

마농님 너무 감사합니다.  생각이 안나서 그냥 임시테이블 여러개로 붙였는데 쿼리가 너무 간결해졌습니다. 너무 감사합니다.

아침 저녁에는 기온차이가 많이 나니 감기 조심하세요.

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