요약 :이 자습서에서는 SQL Server PIVOT
연산자를 사용하는 방법을 배웁니다. 행을 열로 변환합니다.
목표 설정
데모를 위해 production.products
및 테이블 :
다음 쿼리는 각 제품 카테고리의 제품 수를 찾습니다.
출력은 다음과 같습니다.
우리의 목표는 출력의 첫 번째 열에있는 카테고리 이름을 여러 열로 바꾸고 각각의 제품 수를 계산하는 것입니다. 다음 그림과 같은 카테고리 이름 :
또한 모델 연도를 추가하여 categ를 그룹화 할 수 있습니다. 다음 출력에 표시된대로 모델 연도 별 ory :
SQL Server PIVOT 연산자 소개
SQL Server PIVOT
연산자는 테이블 반환 식을 회전합니다. 한 열의 고유 값을 출력의 여러 열로 변환하고 나머지 열 값에 대해 집계를 수행합니다.
다음 단계에 따라 쿼리를 피벗 테이블로 만듭니다.
- 먼저 피벗 할 기본 데이터 세트를 선택합니다.
- 둘째, 파생 테이블 또는 공통 테이블 표현식 (CTE)을 사용하여 임시 결과를 생성합니다.
- 셋째,
연산자.
다음 예에서이 단계를 적용 해 보겠습니다.
먼저
및 production.categories
테이블 :
두 번째, 파생 테이블을 사용하여 임시 결과 집합을 만듭니다.
셋째, PIVOT
연산자를 적용합니다.
이 쿼리는 다음 출력을 생성합니다.
이제 다음을 반환하는 쿼리의 선택 목록에 추가하는 추가 열 베이스 데이터는 자동으로 피벗 테이블의 행 그룹을 형성합니다. 예를 들어, 위 쿼리에 모델 연도 열을 추가 할 수 있습니다.
출력은 다음과 같습니다.
열 값 생성
위 쿼리에서 IN
연산자. 이를 방지하려면 QUOTENAME()
함수를 사용하여 카테고리 이름 목록을 생성하고 쿼리에 복사 할 수 있습니다.
먼저 카테고리 이름 목록을 생성합니다.
출력은 다음과 같습니다.
이 스 니펫에서 :
-
QUOTENAME()
함수는 -
LEFT()
함수는 @columns 문자열에서 마지막 쉼표를 제거합니다. .
둘째, 출력에서 카테고리 이름 목록을 복사하여 쿼리에 붙여 넣습니다.
동적 피벗 테이블
새 카테고리 이름을 production.categories
테이블에 추가하려면 쿼리를 다시 작성해야합니다. 이는 이상적이지 않습니다. 이를 방지하기 위해 동적 SQL을 사용하여 피벗 테이블을 동적으로 만들 수 있습니다.
이 쿼리에서는 고정 된 범주 이름 목록을 PIVOT
연산자를 사용하여 범주 이름 목록을 구성하고 SQL 문에 전달한 다음 저장 프로 시저 sp_executesql
를 사용하여이 문을 동적으로 실행합니다.
이 자습서에서 , SQL Server PIVOT
테이블을 사용하여 행을 열로 변환하는 방법을 배웠습니다.