안녕하세요. 궁금한점이 있어 다시 글을 씁니다. 항상 가르침을 받아서 너무 감사합니다.
오라클 버전은 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 ;