[MSSQL] CASE WHEN 및 IF문 설명 및 사용법(조건문)

이번 포스팅에는 MS-SQL의 조건문에 해당하는 CASE문과 IF문에 대해 살펴보겠습니다.

조건문은 분기문이라고도 하며, 조건에 따라 해당 값을 다르게 줄 수 있습니다.✌

 


CASE WHEN구문?

조건에 따라 값을 지정해주며, 가장 많이 쓰이는 조건문으로 생각하시면 됩니다. :)

 

CASE
	WHEN [조건절] THEN [TRUE일 경우 값]
	ELSE [FALSE일 경우 값]
END

 

CASE WHEN구문 사용법?

아래 예시 테이블을 통한 결과값을 살펴보겠습니다.

(결과 값을 보면 이해가 더 빠르실 거에요!!)

 

 

<예시 사원 테이블>

NO_EMP NM_KOR SALARY
2021040501 이태북 6200
2021040502 복세언 4900
2021040503 김준수 3350
2021040504 박원규 3800
2021040505 최세진 2750

 

SALARY(연봉)에 따른 성과 등급을 출력할 수 있도록 해보겠습니다.

SELECT NO_EMP, NM_KOR, SALARY,
	CASE
    	WHEN SALARY >= 5000 THEN 'S'
        WHEN SALARY BETWEEN 4000 AND 4999 THEN 'A'
        WHEN SALARY BETWEEN 3000 AND 3999 THEN 'B'
        WHEN SALARY BETWEEN 2000 AND 2999 THEN 'C'
        ELSE 'D'
	END AS 성과평가
FROM MA_EMP

 

 

저는 SALARY별 성과등급을 구성하였고,

위와 같이 쿼리를 구성했을 경우 실행 결과는 다음과 같습니다.

 

NO_EMP NM_KOR SALARY 성과평가
2021040501 이태북 6200 S
2021040502 복세언 4900 A
2021040503 김준수 3350 B
2021040504 박원규 3800 B
2021040505 최세진 2750 C

 


IF ELSE구문?

IF ELSE 구문 또한 CASE WHEN 구문과 같은 조건문, 분기문에 해당합니다.

따라서 해당 조건에 따라 원하는 방향으로 출력할 수 있습니다.😁

 

IF ELSE구문 사용법?

IF [조건절 TRUE일 경우 값]
ELSE [조걸절 FALSE일 경우 값]
END [컬럼명]

 

IF ELSE구문은 DECLARE를 통한 변수를 선언해서 해당 값에 조건을 주겠습니다.

이 조건에 따라 "연봉이 ~~ 이상입니다." 라는 결과값을 출력해보도록 하겠습니다.

DECLARE @SALARY
SET @SALARY = 5000

IF @SALARY = 5000
BEGIN
	PRINT '@SALARY는 5000이다.'
END
ELSE
BEGIN
	PRINT '@SALARY는 5000이 아니다.'
END

위 쿼리를 실행할 경우,

"@SALARY는 5000이다."라는 결과값이 출력됩니다.

 

IF ~ ELSE 구문을 사용할 때 다중 IF문이 될 경우는 BEGIN과 END로 묶어주는 것이 좋아요.

왜냐하면, PRINT 메시지 출력할 때 원하지 않는 결과값이 출력될 수가 있어요.

 

조건식이 참일 때까지 구문을 실행하는데, 만약 2번째 구문이 참이되는 경우는 1번째 구문은 실행하지 않고 넘어갑니다.

추가로, IF문은 계속 사용이 가능하지만 코딩이 길어지는 경우는 CASE문을 사용하면 좋을 것 같습니다. :)

 

댓글

Designed by JB FACTORY