02 Ago 2019

sql server pivot 예제

UNPIVOT는 열을 행으로 회전하여 PIVOT의 거의 역방향 작업을 수행합니다. 이전 예제에서 생성된 테이블이 데이터베이스에 pvt로 저장되어 있고 열 식별자 Emp1, Emp2, Emp3, Emp4 및 Emp5를 특정 공급업체에 해당하는 행 값으로 회전한다고 가정합니다. 따라서 두 개의 추가 열을 식별해야 합니다. 회전하는 열 값(Emp1, Emp2,...)을 포함하는 열을 Employee라고 하며, 현재 회전중인 열 아래에 있는 값을 보유하는 열을 Orders라고 합니다. 이러한 열은 Transact-SQL 정의의 pivot_열 및 value_열에 각각 해당합니다. 다음은 쿼리입니다. 그 결과, 지난 4년 동안의 월평균 높고 평균적인 최저치를 한 테이블에서 얻습니다. 피벗 쿼리에 열 플래그를 포함해야 하며, 그렇지 않으면 식 평균(temp)은 고온과 저온의 혼합을 기반으로 합니다. 이 목적을 위해 유용 할 수있는 sp를 작성하고 있습니다.이 sp는 기본적으로 테이블을 피벗하고 새 테이블을 피벗하거나 데이터 집합만 반환합니다.

따라서 피벗 절에 지정된 각 EmployeeID 번호에 대한 열이 있습니다. PurchaseOrderID 열은 그룹화 열이라고 하는 최종 출력에서 반환된 열이 그룹화되는 값 열역할을 합니다. 이 경우 그룹화 열은 COUNT 함수에 의해 집계됩니다. 각 직원에 대한 COUNT를 계산할 때 PurchaseOrderID 열에 나타나는 null 값이 고려되지 않았음을 나타내는 경고 메시지가 나타납니다. 둘째, 쿼리의 또 다른 중요한 부분인 PIVOT 절을 살펴보겠습니다. PIVOT 절의 첫 번째 인수는 집계 함수이며 집계할 열입니다. 그런 다음 FOR 하위 절의 피벗 열을 두 번째 인수로 지정한 다음 피벗 열 값을 포함하는 IN 연산자가 마지막 인수로 지정합니다. 이 하위 선택 문에서 반환되는 결과는 EmployeeID 열에서 피벗됩니다.

피벗에 대한 중요한 아이디어는 피벗 열과 함께 암시적 그룹별 열 목록을 기반으로 그룹화 된 집계를 수행한다는 것입니다. 암시적 그룹별 열은 집계 함수 또는 피벗 열로 나타나지 않는 FROM 절의 열입니다. 이 암시적 그룹별 으로 인해 피벗 출력의 일부가되지 않으려는 열이 FROM 절에서 제외되어야하며 그렇지 않으면 쿼리가 원하지 않는 결과를 생성해야한다는 점에 주목할 필요가 있습니다. 다음 단계를 수행하여 쿼리를 피벗 테이블로 만듭니다: 여러 집계 식의 경우 열은 피벗 열 값의 카르테시안 제품과 집계 식의 제품이 되며 이름은 _. MY_KEY = 피벗하려는 열 이름이 포함된 원래 테이블에서 선택하는 열입니다. 다음 코드는 DaysToManufacture 값이 열 제목이 되도록 피벗된 동일한 결과를 표시합니다. 결과가 NULL이더라도 3일 동안 열이 제공됩니다.