[sql] JOIN 결과에 테이블 피벗하기
먼저, PIVOT
함수를 사용하여 특정 열을 열로 변환하는 방법을 살펴보겠습니다.
SELECT *
FROM (
SELECT department, salary
FROM employees
) src
PIVOT (
AVG(salary)
FOR department IN ('HR' AS hr, 'IT' AS it, 'Finance' AS finance)
) pivoted;
위 예제에서는 사원 테이블에서 각 부서별 평균 급여를 피벗하고 있습니다. PIVOT
키워드 다음에는 평균 급여를 계산할 열을 지정하고, FOR
절에는 피벗할 기준이 될 열을 지정합니다. 이어서 각 부서를 표시할 수 있는 AS 절을 사용하여 실제 열 이름을 정의합니다.
그러나 PIVOT
함수는 모든 데이터베이스에서 사용 가능하지 않을 수 있습니다. 이 경우 CASE
문을 사용하여 피벗할 수 있습니다.
SELECT employee_id,
MAX(CASE WHEN department = 'HR' THEN salary END) AS hr_salary,
MAX(CASE WHEN department = 'IT' THEN salary END) AS it_salary,
MAX(CASE WHEN department = 'Finance' THEN salary END) AS finance_salary
FROM employees
GROUP BY employee_id;
위의 예제에서는 CASE
문을 사용하여 각 부서에 따라 급여를 표시하는 쿼리를 보여줍니다. 각 부서의 급여를 표시할 열을 작성하고, MAX
함수를 사용하여 해당하는 급여를 가져옵니다.그리고 GROUP BY
를 사용하여 각 사원에 대한 결과를 그룹화합니다.
피벗은 데이터를 쉽게 비교하고 분석할 수 있도록 도와줍니다. 특히 보고서를 작성하거나 시각화하는 경우에 매우 유용합니다.