안녕하세요. 날씨가 조금 덜더워진것 같네요. 궁금한점이 있어 문의 드립니다.
오라클 버전은 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 |
여름 감기 조심하시고 항상 건강하세요.
감사합니다.
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 ;