안녕하세요. 궁금한점이 있어 다시 글을 씁니다. 항상 가르침을 받아서 너무 감사합니다.
오라클 버전은 Oracle Database 12c Release 12.1.0.1.0을 사용하고 있습니다.
아래 셀렉트한 결과 값을 MIN(DECODE(DT, '2023/05', DT) DT1 이런식으로 쿼리를 사용하고자 하는데 죄송한데 잘되지 않습니다.
| BIZ | DT | DEPT_NM | AMT | BIZ2 | DT2 | DEPT_NM2 | AMT2 | BIZ3 | DT3 | DEPT_NM3 | AMT3 |
| 1 | 2023/05 | a | 6280791 | ||||||||
| 1 | 2023/05 | b | 74890 | ||||||||
| 1 | 2023/05 | c | 356845 | ||||||||
| 1 | 2023/05 | d | 88600 | ||||||||
| 1 | 2023/06 | a | 8947112 | ||||||||
| 1 | 2023/06 | b | 90270 | ||||||||
| 1 | 2023/06 | c | 1787174 | ||||||||
| 1 | 2023/06 | d | 8500 | ||||||||
| 1 | 2023/07 | a | 5795164 | ||||||||
| 1 | 2023/07 | b | 222583 | ||||||||
| 1 | 2023/07 | c | 265865 | ||||||||
| 1 | 2023/07 | d | 253635 |
아래와 같이 나오게 하는 방법이 없을까요?
| BIZ | DT | DEPT_NM | AMT | BIZ2 | DT2 | DEPT_NM2 | AMT2 | BIZ3 | DT3 | DEPT_NM3 | AMT3 |
| 1 | 2023/05 | a | 6280791 | 1 | 2023/06 | a | 8947112 | 1 | 2023/07 | a | 5795164 |
| 1 | 2023/05 | b | 74890 | 1 | 2023/06 | b | 90270 | 1 | 2023/07 | b | 222583 |
| 1 | 2023/05 | c | 356845 | 1 | 2023/06 | c | 1787174 | 1 | 2023/07 | c | 265865 |
| 1 | 2023/05 | d | 88600 | 1 | 2023/06 | d | 8500 | 1 | 2023/07 | d | 253635 |
늘 감사합니다.
기준이 무언지가 명확해야 합니다.
일단, biz 는 하나의 값으로 통일되는 듯 보이구요.
- 굳이 항목을 나눌 필요가 있을지?
다음, dept_nm 이 행을 나누는 기준이 되는 듯 합니다.
- 굳이 항목을 나눌 필요가 있을지?
그리고, dt 가 열을 나누는 기준이 되는 듯 하네요.
이전 질문의 답글 쿼리을 토대로 기준을 바꾸어 적용시켜 보면
SELECT biz
, dept_nm
, MIN(DECODE(dt, '2023/05', dt )) dt_1
, MIN(DECODE(dt, '2023/05', amt)) amt_1
, MIN(DECODE(dt, '2023/06', dt )) dt_2
, MIN(DECODE(dt, '2023/06', amt)) amt_2
, MIN(DECODE(dt, '2023/07', dt )) dt_3
, MIN(DECODE(dt, '2023/07', amt)) amt_3
FROM t
WHERE biz = '1'
AND dt IN ('2023/05', '2023/06', '2023/07')
GROUP BY biz, dept_nm
ORDER BY biz, dept_nm
;
마농님 정말 감사합니다. 늘 잘배우고 있습니다.
오늘 하루도 행복한 날 되세요