SQL Server / 제어문 / CASE

CASE 함수는 데이터의 값에 따라 특정 값을 부여할 때 사용한다. CASE로 시작하여 END로 끝나고, 조건은 WHEN, 부여할 값은 THEN으로 정의한다.

예를 들어 다음과 같은 점수 데이터가 있다고 하자.

20점 이하는 E, 20점 초과 40점 이하는 D, 40점 초과 60점 이하는 C, 60점 초과 80점 이하는 B, 80점 초과 100점 이하는 A를 주고 싶다면 다음과 같이 쿼리한다.

select 
  point,
  case
    when point <= 20 then 'E'
    when point <= 40 then 'D'
    when point <= 60 then 'C'
    when point <= 80 then 'B'
    when point <= 100 then 'A'
  end as grade
from
  tb_01
;

주의할 점은 한 번 조건에 해당하면 그 다음 조건은 보지 않는 다는 것이다. 즉, 10점은 20점 이하이므로 E가 부여된 후, 40점 이하 조건에도 부합하지만 D가 되지 않는다. 따라서 순서가 중요하다. 만약 아래처럼 한다면 모두 A가 된다.

select 
  point,
  case
    when point <= 100 then 'A'
    when point <= 80 then 'B'
    when point <= 60 then 'C'
    when point <= 40 then 'D'
    when point <= 20 then 'E'
  end as grade
from
  tb_01
;

순서를 신경쓰는 게 싫다면 아래처럼 쿼리할 수도 있다.

select 
  point,
  case
    when ( point > 81 and point <= 100 ) then 'A'
    when ( point > 61 and point <= 80 ) then 'B'
    when ( point > 41 and point <= 60 ) then 'C'
    when ( point > 21 and point <= 40 ) then 'D'
    when ( point >= 0 and point <= 20 ) then 'E'
  end as grade
from
  tb_01
;

Related Posts

SQL Server / 테이블 / 만들기, 삭제하기

SQL Server / 테이블 / 만들기, 삭제하기

테이블 만들기 SSMS에서 만들기 데이터베이스를 확장하고 을 선택한 다음 마우스 우클릭한다. 을 클릭한다. 열이 하나도 없으면 만들어지지 않으므로 하나 이상의 열을 만든다. 저장 아이콘을 클릭하고... 테이블 이름을 정한 후 을 클릭하면... 테이블이 만들어진다. 쿼리로 만들기 Shop 데이터베이스에서 Client 테이블을 만들다고 하면... USE Shop; CREATE TABLE Client ( clientId INT ); 테이블 삭제하기 SSMS에서 삭제하기 삭제하려는 테이블을 선택하고 마우스 우클릭한 다음 를 ...

SQL Server / Query / 쿼리 만들고 실행하는 방법

SQL Server / Query / 쿼리 만들고 실행하는 방법

쿼리(Query)를 이용하여 필요한 데이터를 추출하거나 여러 가지 작업을 할 수 있습니다. SSMS에서 쿼리를 만들고 실행하는 과정은 다음과 같습니다. 데이터베이스 서버에 접속하고 를 클릭합니다. 드롭다운 목록에서 쿼리를 할 데이터베이스를 선택합니다. 쿼리를 입력하고 을 클릭합니다. 단축키는 F5입니다. 하단에 쿼리 결과가 나옵니다. 여러 개의 쿼리를 입력했다면 각각 결과가 나옵니다. 쿼리에 블록을 씌우고 실행하면 그것만 실행됩니다. 작성한 쿼리는 저장할 수 ...

SQL Server / Query / GO

SQL Server / Query / GO

예를 들어 DB라는 데이터베이스를 만들고, ID라는 열을 갖는 TB라는 테이블을 만든다고 하자. 쿼리로 만드는 경우 다음과 같이 할 수 있는데... CREATE DATABASE DB; USE DB; CREATE TABLE TB ( ID int ); 다음과 같은 에러가 난다. 데이터베이스 'DB'이(가) 없습니다. 이름을 제대로 입력했는지 확인하십시오. 이런 경우 GO를 사용한다. GO를 기준으로 해서 GO 위의 쿼리 실행을 마친 후 ...

SQL Server / 메모 / Query

SQL Server / 메모 / Query

최근 날짜 가져오기 Name으로 그룹화한 후 최근 날짜를 가져온다. SELECT Name, MAX( Date ) FROM Table1 GROUP BY Name 최근 날짜가 2020년인 것만 가져온다. SELECT Name, MAX( Date ) FROM Table1 GROUP BY Name HAVING MAX( Date ) BETWEEN '2020-01-01' AND '2020-12-31' 모든 데이터베이스 출력하기 EXECUTE sp_helpdb;

SQL Server / 보안 / 사용자 계정 만들고 권한 추가하는 방법

SQL Server / 보안 / 사용자 계정 만들고 권한 추가하는 방법

SQL Server의 사용자 계정은 Windows 인증을 이용한 사용자 계정, SQL Server 자체의 사용자 계정이 있습니다. 그 중 SQL Server 자체의 사용자 계정을 만들고, 권한을 부여하는 방법을 알아보겠습니다. SSMS로 SQL Server에 접속합니다. 을 선택합니다.(확장하면 전체 사용자 목록을 볼 수 있습니다.) 마우스 우클릭하고 을 클릭합니다. 사용자를 추가하는 창이 뜹니다. 을 선택하고... 로그인 ...

SQL Server / 관리 / 스케줄에 따라 자동 백업하는 방법

SQL Server / 관리 / 스케줄에 따라 자동 백업하는 방법

데이터베이스는 주기적으로 백업을 해야 합니다. SQL Server의 유지 관리 계획을 이용하면, 백업 되풀이 작업을 만들어 일정 주기마다 자동으로 백업하게 할 수 있습니다. SSMS로 자동 백업을 만드는 방법을 알아보겠습니다. 을 선택합니다. 마우스 우클릭하고 를 클릭합니다. 을 클릭합니다. 이름을 적절히 정하고 을 클릭합니다. 를 선택하고 ...

SQL Server / SSMS / 글꼴 변경하는 방법

SQL Server / SSMS / 글꼴 변경하는 방법

SQL Server 관리는 보통 SSMS(SQL Server Management Studio)로 한다. 다른 툴도 많이 있지만, 전용 도구가 갖는 장점이 많이 있기 때문이다. 보통 한글 버전을 설치하게 되는데, 쿼리 창 기본 글꼴이 돋움체이다. 만약 이 글꼴이 마음에 들지 않는다면 옵션에서 변경할 수 있다. 변경은 에서 한다. 에서 글꼴을 설정해주면 끝. 개인적으로 ...

SQL Server / 오류 22022 / SQLServerAgent가 현재 실행되고 있지 않으므로 이 동작을 알릴 수 없습니다.

SQL Server / 오류 22022 / SQLServerAgent가 현재 실행되고 있지 않으므로 이 동작을 알릴 수 없습니다.

SQL Server에 스케줄에 따라 자동 백업하는 작업을 추가할 때 다음과 같은 메시지가 나왔습니다. SQL Server Agent가 실행되고 있지 않아 작업을 추가할 수 없는 것입니다. SQL Server Agent가 실행 중이 아니어서 발생한 문제이므로, 실행시키면 해결되겠죠? SQL Server가 설치된 컴퓨터의 서비스를 엽니다. Windows Server라면 서버 관리자에서 를 클릭하면 됩니다. 아니면, 실행 창을 ...

SQL Server / Query / IN, NOT IN

SQL Server / Query / IN, NOT IN

예제로 사용한 데이터베이스는 AdventureWorks2017입니다. IN 다음은 Person.Person 테이블에서 FirstName, MiddleName, LastName을 10개 추출하는 쿼리입니다. SELECT TOP(10) FirstName, MiddleName, LastName FROM Person.Person 만약 FirstName이 Syed 또는 Sam 또는 John인 사람을 추출하고 싶다면 아래처럼 쿼리합니다. SELECT TOP(10) FirstName, MiddleName, LastName FROM Person.Person WHERE FirstName IN ( 'Syed', 'Sam', 'John' ) 물론 아래와 같이 해도 됩니다. SELECT TOP(10) FirstName, MiddleName, LastName FROM Person.Person WHERE FirstName ...

SQL Server / Agent XPs 구성 요소는 이 서버의 보안 구성에 따라 해제되었습니다.

SQL Server / Agent XPs 구성 요소는 이 서버의 보안 구성에 따라 해제되었습니다.

SSMS로 작업하다보면 다음과 같은 메시지를 만날 때가 있습니다. 이를 해결하는 방법은... SQL Server가 설치된 컴퓨터에서 SSMS를 실행한 후, 을 선택하고... 마우스 우클릭 한 후 을 클릭합니다. 를 클릭하고... 잠시 기다리면... 다음과 같이 메뉴가 바뀌면서 해결됩니다.