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 / SSMS / 도움말 추가하는 방법

SQL Server / SSMS / 도움말 추가하는 방법

SQL Server에 관한 많은 자료가 온라인에 있지만, 웹에서 검색하는 것이 불편하거나 불가능할 수 있다. 그런 경우 SSM에 도움말을 추가하여 쉽게 정보를 얻을 수 있다. 기본 설치를 했다면 도움말이 전혀 없으므로, 수동으로 추가해야 한다. SSMS를 실행하고 를 클릭한다. 추가하려는 도움말을 선택한다. 선택한 도움말을 다운로드할 때 필요한 디스크 용량은 오른쪽 ...

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

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

쿼리(Query)를 이용하여 필요한 데이터를 추출하거나 여러 가지 작업을 할 수 있다. SSMS에서 쿼리를 만들고 실행하는 과정은 다음과 같다. SQLServer에 접속하고 데이터베이스 선택 데이터베이스 서버에 접속하고 를 클릭한다. 드롭다운 목록에서 쿼리를 할 데이터베이스를 선택한다. 쿼리 작성하고 실행 쿼리를 입력하고 을 클릭한다. 단축키는 F5이다. SQL은 대소문자를 구분하지 않는다. 하단에 쿼리 결과가 나온다. 여러 개의 쿼리를 입력했다면 각각 결과가 나온다. 일부 쿼리 ...

SQL Server / 샘플 데이터베이스 AdventureWorks 설치하는 방법

SQL Server / 샘플 데이터베이스 AdventureWorks 설치하는 방법

만약 공부에 필요한 샘플 데이터베이스가 필요하다면 Micrososft에서 제공하는 AdventureWorks를 사용하자. AdventureWorks 샘플 데이터베이스 페이지에 접속하여 백업 파일을 다운로드한다. SSMS에서 를 선택하고... 마우스 우클릭 후 을 클릭한다. 를 선택하고, 찾아보기 아이콘을 클릭한 후... 를 클릭하고... 다운로드한 파일을 선택하고 을 클릭한다. 을 클릭하면... 가져오기가 완료된다. 가져온 데이터베이스는 를 확장하여 볼 수 있다.

SQL Server / Query / ROLLUP

SQL Server / Query / ROLLUP

부분합 등을 구하고 싶다면 ROLLUP을 사용한다. 기본 다음과 같은 sales 테이블이 있다고 하자. team은 소속, man은 직원, sales는 판매액이다. select * from sales ; 다음과 같이 하면 직원별 소계, 팀별 소계, 전체 합계가 출력된다. select id, team, man, sum( sales ) as sales from sales group by rollup ( team, man, id ) ; 다음과 같이 ...

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

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

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

SQL Server / 연산자 / 비교 연산자, 논리 연산자

예제로 사용한 데이터베이스는 AdventureWorks이다. 같다 HumanResources.Employee 테이블에서 BusinessEntityID가 10인 데이터를 출력한다. select * from HumanResources.Employee where BusinessEntityID = 10 ; 같지 않다 HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 작거나 큰, 즉 같지 않은 데이터를 출력한다. select * from HumanResources.Employee where BusinessEntityID <> 10 ; <> 대신 !=를 사용해도 된다. select * from HumanResources.Employee where BusinessEntityID != 10 ; 크다 HumanResources.Employee 테이블에서 BusinessEntityID가 10보다 큰 데이터를 출력한다. select ...

SQL Server / 테이블 / 만들기, 삭제하기, 수정하기, 조회하기

SQL Server / 테이블 / 만들기, 삭제하기, 수정하기, 조회하기

테이블 만들기 client 테이블을 만든다. 열이 하나도 없으면 만들어지지 않으므로, 적어도 하나의 열은 같이 만들어야 한다. create table client ( id int ); 테이블 삭제하기 client 테이블을 삭제한다. drop table client; 테이블 이름 변경하기 테이블 client의 이름을 account로 변경한다. sp_rename client, account; 테이블 목록 조회하기 방법 1 select * from information_schema.tables; 방법 2 execute sp_tables @table_type = "'table'"; SSMS 테이블 만들기 데이터베이스를 확장하고 을 선택한 다음 ...

SQL Server / SSMS / 탭 설정하는 방법

SQL Server / SSMS / 탭 설정하는 방법

SSMS의 텍스트 에디터의 기본 탭 크기는 4이다. 만약 탭 크기를 변경하고 싶다면 을 열고, 텍스트 편집기 > 모든 언어 > 탭 으로 이동하여, 탭 크기의 수를 조정한다. 그리고 이에 맞게 들여쓰기도 같이 조정한다. 개인적으로 선호하는 설정은 탭 크기 2에 공백 삽입.

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

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

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

SQL Server / 메모

SQL Server / 메모

보안 주체 "dbo"이(가) 없거나 이 유형의 보안 주체를 가장할 수 없거나 사용 권한이 없기 때문에 데이터베이스 보안 주체로 실행할 수 없습니다. (Microsoft SQL Server, 오류: 15517) 데이터베이스를 복원하면 사용자 권한 문제로 다음과 같은 에러가 날 수 있다. 이는 다음과 같이 명령하여 해결할 수 있다. ALTER AUTHORIZATION ON DATABASE:: DBName TO 예를 들어 문제가 ...