본문 바로가기
카테고리 없음

오라클 sql 행과 열로 표시

by 3604 2024. 8. 18.
728x90

 출처: AI 엣지

Oracle SQL에서 행을 열로 변환하는 방법에는 여러 가지가 있습니다. 대표적으로 PIVOT, DECODE, CASE 표현식, 그리고 LISTAGG 함수를 사용할 수 있습니다. 아래에 각 방법에 대한 간단한 예제를 소개합니다:

1. PIVOT 함수 사용

PIVOT 함수는 Oracle 11g 이상에서 사용할 수 있습니다. 다음은 예제입니다:

SQL
 
SELECT deptno, p_president, p_analyst, p_manager, p_salesman, p_clerk
FROM (
    SELECT deptno, job, sal
    FROM emp
) PIVOT (
    SUM(sal) FOR job IN ('PRESIDENT' AS p_president, 'ANALYST' AS p_analyst, 'MANAGER' AS p_manager, 'SALESMAN' AS p_salesman, 'CLERK' AS p_clerk)
);
AI가 생성한 코드입니다. 신중하게 검토하고 사용하세요. FAQ의 자세한 정보.

2. DECODE 함수 사용

DECODE 함수는 모든 Oracle 버전에서 사용할 수 있습니다:

SQL
 
SELECT deptno,
    SUM(DECODE(job, 'PRESIDENT', sal)) AS p_president,
    SUM(DECODE(job, 'ANALYST', sal)) AS p_analyst,
    SUM(DECODE(job, 'MANAGER', sal)) AS p_manager,
    SUM(DECODE(job, 'SALESMAN', sal)) AS p_salesman,
    SUM(DECODE(job, 'CLERK', sal)) AS p_clerk
FROM emp
GROUP BY deptno
ORDER BY deptno;
AI가 생성한 코드입니다. 신중하게 검토하고 사용하세요. FAQ의 자세한 정보.

3. CASE 표현식 사용

CASE 표현식은 표준 SQL이기 때문에 대부분의 DB에서 사용할 수 있습니다:

SQL
 
SELECT deptno,
    SUM(CASE WHEN job = 'PRESIDENT' THEN sal END) AS p_president,
    SUM(CASE WHEN job = 'ANALYST' THEN sal END) AS p_analyst,
    SUM(CASE WHEN job = 'MANAGER' THEN sal END) AS p_manager,
    SUM(CASE WHEN job = 'SALESMAN' THEN sal END) AS p_salesman,
    SUM(CASE WHEN job = 'CLERK' THEN sal END) AS p_clerk
FROM emp
GROUP BY deptno
ORDER BY deptno;
AI가 생성한 코드입니다. 신중하게 검토하고 사용하세요. FAQ의 자세한 정보.

4. LISTAGG 함수 사용

LISTAGG 함수는 여러 행의 문자열을 하나의 열로 합칠 때 사용합니다:

SQL
 
SELECT job, LISTAGG(ename, ',') WITHIN GROUP (ORDER BY ename) AS names
FROM emp
GROUP BY job;
AI가 생성한 코드입니다. 신중하게 검토하고 사용하세요. FAQ의 자세한 정보.
728x90