MSSQL/SQL

[MSSQL] WHERE CASE WHEN

안낭우훗 2018. 7. 20. 18:29


  예제1


과목이 Math일 경우에만 점수가 100점 그 외의 경우에는 0점인 ROW 조회


SELECT *
FROM TBL_TEST
WHERE Score = (CASE WHEN @in_Subject = 'Math' THEN 100 ELSE 0 END)


위의 쿼리는 아래와 같이 AND OR 조건으로 바꿔 사용할 수도 있다.


SELECT *
FROM TBL_TEST
WHERE (@in_Subject = 'Math' AND Score = 100)
	OR (@in_Subject <> 'Math' AND Score = 0)




  예제2


과목이 Math일 경우에만 점수가 100점 그 외의 경우에는 전체 ROW 조회


SELECT * FROM TBL_TEST WHERE (CASE WHEN @in_Subject = 'Math' THEN Score ELSE '' END) = (CASE WHEN @in_Subject = 'Math' THEN 100 ELSE '' END)




  예제3


과목이 Math일 경우 점수가 100점 English일 경우에 점수가 50점인 ROW 조회


SELECT * FROM TBL_TEST WHERE (CASE WHEN @in_Subject IN ('Math','English') THEN Score ELSE '' END) = (CASE WHEN @in_Subject = 'Math' THEN 100 WHEN @in_Subject = 'English' THEN 50 ELSE '' END)




출처: http://ggmouse.tistory.com/214?category=938079 [초보개발자꽁쥐]