예
PIVOT 절은 SQL Server (Transact-SQL)에서 사용할 수 있습니다.
다음 데이터가 포함 된 직원 테이블이있는 경우 :
employee_number | last_name | first_name | salary | dept_id |
---|---|---|---|---|
12009 | 서덜랜드 | 바바라 | 54000 | 45 |
34974 | 예이츠 | 프레드 | 80000 | 45 |
34987 | 에릭슨 | 닐 | 42000 | 45 |
45001 | 파커 | 샐리 | 57500 | 30 |
75623 | 게이트 | 스티브 | 65000 | 30 |
그리고 교차 기호를 생성하는 다음 SQL 문을 실행했습니다. PIVOT 절을 사용하는 쿼리에서 :
다음 결과를 반환합니다.
TotalSalaryByDept | 30 | 45 |
---|---|---|
TotalSalary | 122500 | 176000 |
이 예에서는 dept_id 30 및 dept_id 45의 총 급여를 표시하는 피벗 테이블을 만듭니다. 결과는 두 부서가 표시되는 한 행에 표시됩니다. 각각의 열에 있습니다.
이제 PIVOT 절을 분리하고 작동 방식을 설명하겠습니다.
크로스 테이블 결과에서 열 지정
먼저 교차 표 결과에 포함 할 필드를 지정하려고합니다. 이 예에서는 리터럴 값 “TotalSalary”를 피벗 테이블의 첫 번째 열로 포함하려고합니다. 그리고 dept_id 30에 대해 하나의 열을 만들고 dept_id 45에 대해 두 번째 열을 만들려고합니다. 그러면 피벗 테이블에 3 개의 열이 제공됩니다.
SELECT "TotalSalary" AS TotalSalaryByDept, ,
소스 지정 테이블 데이터
다음으로 피벗 테이블의 소스 데이터를 반환 할 SELECT 문을 지정해야합니다.
이 예에서는 dept_id 및 salary 값을 반환하려고합니다. 직원 테이블 :
(SELECT dept_id, salary FROM employees) AS SourceTable
소스 쿼리의 별칭을 지정해야합니다. 이 예에서는 쿼리의 별칭을 SourceTable로 지정했습니다.
집계 함수 지정
다음으로 교차 분석 쿼리를 만들 때 사용할 집계 함수를 지정해야합니다. SUM, COUNT, MIN, MAX 또는 AVG 함수와 같은 집계를 사용할 수 있습니다.
이 예에서는 SUM 함수를 사용합니다. 그러면 급여 값이 합산됩니다.
PIVOT(SUM(salary)
피벗 값 지정
마지막으로 결과에 포함 할 피벗 값을 지정해야합니다. . 이러한 값은 교차 분석 쿼리에서 열 제목으로 사용됩니다.
이 예에서는 30과 45의 dept_id 값만 반환합니다. 이러한 값은 피벗에서 열 제목이됩니다. 표. 또한 이러한 값은 dept_id 값의 유한 목록이며 가능한 모든 값을 포함 할 필요는 없습니다.
FOR dept_id IN (, )
이제 모두 합치면 다음 피벗 테이블을 얻습니다.
TotalSalaryByDept | 45 | |
---|---|---|
TotalSalary | 122500 | 176000 |