SQL Server PIVOT (한국어)

요약 :이 자습서에서는 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 테이블을 사용하여 행을 열로 변환하는 방법을 배웠습니다.

답글 남기기

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