
오라클의 DECODE 라는 조건문이 있는데, MS-SQL 에는 IIF 를 DECODE 처럼 이용할 수 있다. SQL Server 2012 버전부터 사용이 가능하며, CASE 문을 주로 사용하기는 하지만 두 가지 값만 리턴 받을 땐 좀 더 간단하게 작성할 수 있는 IIF 를 사용할 수 있다. IIF 와 CASE 에 대해서 확인하도록 하자.
TEST Table & Data Create
CREATE TABLE #tmp_data
(
cust_id int,
cust_name varchar(10),
cust_job varchar(10)
)
INSERT INTO #tmp_data VALUES (1,'홍길동','학생')
INSERT INTO #tmp_data VALUES (2,'이순신','군인')
INSERT INTO #tmp_data VALUES (3,'카네기','학생')
INSERT INTO #tmp_data VALUES (4,'임꺽정','목수')

우선, 원활한 테스트 진행을 위해 임시테이블 자료를 생성한다.
IIF
- 특정 조건이 참이면 A, 거짓이면 B로 응답한다.
-- IIF(조건식, 참, 거짓)
SELECT *, IIF(cust_job = '학생', '졸업예정', '현역')
FROM #tmp_data

cust_job 이 학생일 경우, 졸업예정으로 아닐 경우는 현역으로 자료 조회를 진행 해 보았다. 위와 같이 IIF(조건식 , 참, 거짓 )으로 작성을 하여 조회가 가능하다. 오라클에서는 DECODE(cust_job, '학생', '졸업예정', '현역') 으로 쓰이는 것과 MS-SQL IIF 로 쓰이는 게 동일하다.
CASE
- CASE 는 조건을 WHEN 구에 사용하며, 해당 조건이 참이면 THEN 이 실행되고 거짓이면 ELSE 가 응답된다.
SELECT *,
CASE WHEN cust_job = '학생' AND cust_name = '홍길동' THEN '졸업예정'
WHEN cust_job = '학생' THEN '재학생'
ELSE '졸업생' END
FROM #tmp_data

위와 같이 CASE 문은 여러가지의 조건을 추가하며, 해당 조건에 따른 여러가지 케이스에 따른 결과를 조회할 수 있다.
1. cust_job 이 학생이면서 이름이 홍길동이라면 졸업예정
2. cust_job 이 학생이면 재학생
3. 그 외 졸업생
우린 아래와 같은 여러 조건을 걸어 자료를 추출하였고, case 문은 순차적으로 처리됨에 따라 홍길동인 학생은 졸업예정으로 표기되고, 나머지 학생들은 모두 재학생, 그 외의 인물들은 졸업생으로 표기할 수 있다.
'데이터베이스[DB] > MSSQL' 카테고리의 다른 글
[MS-SQL] UNION, UNION ALL (0) | 2025.03.18 |
---|---|
[MS-SQL] COMMIT, ROLLBACK, BEGIN TRAN (0) | 2025.02.11 |
[MS-SQL] 테이블별 용량확인 (0) | 2025.01.18 |
[MS-SQL] TOP, WITH TIES, ROW_NUMBER (0) | 2025.01.17 |
[MS-SQL] 테이블생성, 컬럼생성, 컬럼수정, 컬럼삭제, 테이블명변경 ( Create table, Alter table, Modify, Rename ) (0) | 2025.01.14 |
[MS-SQL] 인덱스 단편화 조회 및 리빌드 (0) | 2025.01.09 |
[MS-SQL] 테이블-컬럼 정보 조회 (0) | 2025.01.01 |
[MS-SQL] FOR JSON PATH - Json형식변 (0) | 2024.10.22 |