다중 DECODE? 0 4 1,717

by 차차 [SQL Query] [2017.04.07 23:10:50]


SUM(CS_TIME) OVER(PARTITION BY EDU_TP_CD) SUM_CS_TIME 누적시간
ISU_FLAG 수료 

누적시간에 16시간에 해당하는 인원들을 ISU_FLAG 의 값을 수료로 바꿔주고 싶은데

교육 구분에 맞게끔 누적시간은 나오는데 ISU_FLAG 를 어떻게 수료로 바꿔주어야 할지 모르겠습니다...

DECODE(SUM_CS_TIME,'16','EDURY',DECODE(ISU_FLAG,'EDURY','EDURN'))

EDURY 완료 EDURN 미완료

이런식으로 16시간이 딱 되면 자동으로 수료로 바뀌게 하고 싶은데

하나의 컬럼으로 DECODE는 이해가 되는데 두개의 컬럼을 쓰니깐 어떻게 할지 감이 잡히지가 않네요 

방법이 있을까요?

by 마농 [2017.04.10 10:49:47]

CASE 문 사용하세요.


by 차차 [2017.04.11 11:42:52]
( CASE WHEN SUM(A.CS_TIME) OVER(PARTITION BY EDU_TP_CD) >= '16' THEN 'EDURY'
       WHEN SUM(A.CS_TIME) OVER(PARTITION BY EDU_TP_CD) < '16' THEN 'EDURN'
                 ELSE 'EDURN'
             END ) AS ISU_FLAG

해결 되었습니다! 혹시나 도움 다른분들 도움 되시라고 올립니다.


by 마농 [2017.04.11 13:12:51]

2번째 줄은 불필요해 보이네요.


by 차차 [2017.04.13 18:52:39]

항상 많이 배웁니다 감사해요!

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