안녕하세요. 날씨가 조금 덜더워진것 같네요. 궁금한점이 있어 문의 드립니다.
오라클 버전은 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
;
마농님 너무 감사합니다. 생각이 안나서 그냥 임시테이블 여러개로 붙였는데 쿼리가 너무 간결해졌습니다. 너무 감사합니다.
아침 저녁에는 기온차이가 많이 나니 감기 조심하세요.