안녕하세요. 날짜로 쿼리 0 2 1,826

by 마르스헤븐 [SQL Query] [2023.08.16 11:30:20]


안녕하세요. 궁금한점이 있어 다시 글을 씁니다. 항상 가르침을 받아서 너무 감사합니다.

오라클 버전은 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

 

늘 감사합니다.

 

by 마농 [2023.08.16 13:57:25]

기준이 무언지가 명확해야 합니다.
일단, 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
;

 


by 마르스헤븐 [2023.08.16 14:46:49]

마농님 정말 감사합니다. 늘 잘배우고 있습니다. 

오늘 하루도 행복한 날 되세요

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