where절에서 사용하는 case when 질문드립니다. 1 2 1,445

by 최사원 [Oracle 기초] case where [2017.07.26 00:00:10]


특정날짜에 따라 조건절을 다르게 주고 싶습니다. 

 

SELECT *

 FROM SAWON
WHERE DEPT_CD IN (CASE WHEN Reg_DATE >= 20160331' THEN 'A','B' 

                                    WHEN REG_DATE > '20160401' THEN 'A','B','C'

                             END)

--> 2016.03.31 전에는 조건절이 SELECT * FROM SAWON WHERE DEPT_CD IN ('A','B')

--> 2016.04.01 이후는 조건절이 SELECT * FROM SAWON WHERE DEPT_CD IN ('A','B','C') 

이렇게 날짜에 따라 조건절이 달라지게 하고 싶은데, THEN 절 이후로 'A' 하나씩만 해야 제대로 값이 나오고, 

2개이상 'A','B' or  'A','B','C' 로 하면 아무것도 안나옵니다. 어떻게 표현을 해야할까요?

by jkson [2017.07.26 08:05:36]
SELECT * 
  FROM SAWON
 WHERE ((REG_DATE <= '20160331' AND DEPT_CD IN ('A','B'))
     OR (REG_DATE >= '20160401' AND DEPT_CD IN ('A','B','C'))) 

 


by 마농 [2017.07.26 08:53:20]
SELECT *
  FROM sawon
 WHERE dept_cd IN ('A', 'B', CASE WHEN reg_date >= '20160401' THEN 'C' END)
;

 

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