728x90
SQL Server 2012 버전부터 IIF 함수가 추가되었다. CASE 문을 사용하면 쿼리문이 조금 복잡해지는 부분이 있는데 2가지의 값만 리턴이 필요하다면 IIF 함수가 조금 더 효율적일 수 있다. 오라클의 DECODE 함수처럼 조금 함축적으로 쿼리문을 작성할 수 있지만 MSSQL에 종속된 함수이다.
IIF 함수는 참과 거짓 두 경우의 값만 리턴이 가능하다.
DECLARE @score INT = 80
SELECT IIF(@score >= 70, '합격', '불합격') AS score
더 많은 조건식을 사용하기 위해서는 CASE 문을 사용해야 한다.
IS NULL 등 다양한 조건식이 사용가능 하다.
DECLARE @score INT = NULL
SELECT IIF(@score IS NULL, '미입력', '입력완료') AS input
IIF 함수는 중첩 사용이 가능하다. 그러나 중첩 사용은 쿼리문이 복잡해지기 때문에 추천하지 않는다.
이런 경우에는 CASE 문을 사용할 것을 권장한다.
DECLARE @score INT = 69
SELECT IIF(@score >= 70, '합격',
IIF(@score < 70 AND @score > 60, '합격보류', '불합격')
) AS pass
통계 쿼리문 작성할 때도 유용하게 사용할 수 있다.
SELECT SUM(IIF(MONTH(hiredate) = 1, 1, 0)) AS [01월]
, SUM(IIF(MONTH(hiredate) = 2, 1, 0)) AS [02월]
, SUM(IIF(MONTH(hiredate) = 3, 1, 0)) AS [03월]
, SUM(IIF(MONTH(hiredate) = 4, 1, 0)) AS [04월]
, SUM(IIF(MONTH(hiredate) = 5, 1, 0)) AS [05월]
, SUM(IIF(MONTH(hiredate) = 6, 1, 0)) AS [06월]
, SUM(IIF(MONTH(hiredate) = 7, 1, 0)) AS [07월]
, SUM(IIF(MONTH(hiredate) = 8, 1, 0)) AS [08월]
, SUM(IIF(MONTH(hiredate) = 9, 1, 0)) AS [09월]
, SUM(IIF(MONTH(hiredate) = 10, 1, 0)) AS [10월]
, SUM(IIF(MONTH(hiredate) = 11, 1, 0)) AS [11월]
, SUM(IIF(MONTH(hiredate) = 12, 1, 0)) AS [12월]
FROM emp
'DataBase > MSSQL' 카테고리의 다른 글
[MSSQL] ROLLUP 사용법 (소계, 합계) (0) | 2022.04.19 |
---|---|
[MSSQL] 조인 방법 쉽게 정리 (INNER JOIN, OUTER JOIN) (0) | 2022.04.19 |
[MSSQL] ISNULL 함수 사용법 (NVL, NVL2, IFNULL) (0) | 2022.04.12 |
[MSSQL] CHOOSE 함수 사용법 (0) | 2022.04.12 |
[MSSQL] MERGE 문 사용법 (DUAL, UPDATE와 INSERT를 한번에) (0) | 2022.04.12 |
댓글