SQL Server : PIVOT 절


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 (, )

이제 모두 합치면 다음 피벗 테이블을 얻습니다.

0 일

TotalSalaryByDept 45
TotalSalary 122500 176000

Leave a Reply

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다