본문 바로가기
ORACLE/SQL

[Oracle] DECODE 함수 사용 쿼리 결과 가로로 보기 :: 마이자몽

by 🌻♚ 2020. 3. 20.

DECODE 함수

DECODE 함수를 사용하여 쿼리내의 조건문 처럼 사용할 수 있습니다. 첫번째 인자로 확인할 대상을 넣어주고 2번째 인자에 확인할 대상의 예측 값이 있으면 3번째 인자를 없으면 4번째 인자의 값을 반환해줍니다.

 

CASE 표현식과는 다르게 범위식의 조건을 넣을수 없고 2번째 인자가 있는지 없는지 확인합니다. Oracle Scott 계정으로 DECODE 함수 사용 예시를 알아보겠습니다.

 

세로결과를 가로로

1
2
3
4
5
6
SELECT
    DEPARTMENT_ID
    ,SUM(SALARY)
FROM EMPLOYEES
WHERE DEPARTMENT_ID <=30
GROUP BY DEPARTMENT_ID;

부서번호가 30 이하인 데이터를 부서로 GROUP BY 했습니다. 세로형태로 되어있는 데이터를 가로로 변환시켜주는 예제를 DECODE 함수를 이용해서 표현해보겠습니다.

 

1
2
3
4
5
6
SELECT
    SUM(DECODE(DEPARTMENT_ID, 10, SALARY, 0)) AS "10"
    ,SUM(DECODE(DEPARTMENT_ID, 20, SALARY, 0)) AS "20"
    ,SUM(DECODE(DEPARTMENT_ID, 30, SALARY, 0)) AS "30"
    ,SUM(DECODE(DEPARTMENT_ID, 400, SALARY,0)) AS "400"
FROM EMPLOYEES;
 

DEPARTMENT_ID가 각각 10, 20, 30 인지 확인하고 해당 행의 SALARY 값을 SUM한 결과를 반환해줍니다. 400같은 경우에는 데이터에 없으므로 0을 반환하도록 마지막 행일 지정해줬습니다.

 

태그

댓글0