프로그래밍/DB

[DB] MSSQL CASE문 사용법

ss-pro 2020. 10. 22. 23:50
반응형

MSSQL에서 CASE WHEN문 사용법에대해 설명드리겠습니다. CASE문은 언제 사용할까요? 조건에 대하여 해당하는 결과에 따라 값을 결정할때 많이 사용합니다. 프로그램의 IF문과 비슷하다고 보면될것 같습니다. AdventureWorkLT2017테이블로 테스트 해보도록 하겠습니다. 먼저 MSDN자료에서 CASE구문에 대해 살펴보도록 하겠습니다.  case .. when .. then ..  else end 이런식으로 처리가됩니다. 

Address테이블을 검색하면 아래와 같은 결과가 나옵니다. 

ContryRegion이 영문으로 표기되어있는데 해당값을 국가별 약자명 코드로 변경하는 방법에 대해 알아보겠습니다. 
국가코드 : ko.wikipedia.org/wiki/ISO_3166-1

1
2
3
4
5
6
7
SELECT  CASE CountryRegion 
        WHEN 'United States' THEN 'USA' 
        WHEN 'Canada' THEN 'CAN' 
        WHEN 'United Kingdom' THEN 'GBR'
        ELSE  'ETC' END Contry, CountryRegion , * 
FROM AdventureWorksLT2017.SalesLT.Address

쿼리결과입니다. 국가별 코드값이 3자리로 표기되어 나오는것을 확인할수 있습니다. 

이번에는 CASE문안에 조건을 주어 표기를 해보도록 하겠습니다. CASE문내에서 필드에 맞는조건값을 입력한다음 해당조건에 맞을경우에 특정값이 나오도록 해보겠습니다. AddressID의 범위를 1~100사이, 100~1000사이, 1000이상으로 나타내려고 하면 아래와 같이 하면됩니다. 

1
2
3
4
5
6
SELECT    CASE 
        WHEN (AddressID >=1000)  THEN  '1000 Over'
        WHEN (AddressID >=100 and AddressID <1000) THEN '100~999' 
        WHEN (AddressID >=1 and AddressID <100) THEN '1~99' 
        ELSE  'ETC' END IDRange, CountryRegion , * 
FROM AdventureWorksLT2017.SalesLT.Address


출처 및 참고) 
docs.microsoft.com/ko-kr/sql/t-sql/language-elements/case-transact-sql?view=sql-server-ver15