집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server의 PIVOT 연산자는 어떻게 여러 열의 데이터를 행 기반 형식으로 재구성할 수 있습니까?
SQL Server에서 공개되는 PIVOT의 비밀
데이터가 분석하기 어려운 방식으로 구성되어 있는 데이터 세트를 자주 접하게 됩니다. 의미 있는 형식으로 제시됩니다. 이러한 시나리오 중 하나는 데이터가 여러 열로 구성될 때 발생하며, 각 열은 특정 범주에 대해 서로 다른 값을 나타냅니다. 이러한 데이터세트를 범주가 열이고 값이 행인 테이블로 변환하려면 SQL Server에서 PIVOT 연산자를 사용할 수 있습니다.
"Name1" 열이 있는 "mytable"이라는 테이블이 있는 시나리오를 고려해 보겠습니다. , "이름2" 및 "값"입니다. 이 테이블의 데이터는 다양한 이름("A" 및 "B")과 연관된 다양한 값("P1", "P2", "P3", "P4")을 나타냅니다.
Name1 Name2 Value A P1 1 A P2 1 A P3 2 B P1 3 B P2 1 B P4 1
우리의 목표 이 데이터를 다음 형식으로 재구성하는 것입니다.
A B P1 1 4 P2 1 1 P3 2 NULL P4 NULL 1
SQL Server 2005에서는 동적 쿼리 구성을 활용하여 PIVOT을 사용하여 이러한 변환을 수행할 수 있습니다. 단계별 가이드는 다음과 같습니다.
쉼표로 구분된 열 이름 문자열 조합: 다음 쿼리를 실행하여 모든 고유한 "Name1을 포함하는 문자열을 생성합니다. "로 구분된 값 쉼표:
DECLARE @cols VARCHAR(1000) SELECT @cols = STUFF(( SELECT distinct ',' + QuoteName([Name1]) FROM myTable FOR XML PATH('') ), 1, 1, '')
동적 SQL 쿼리 구성: @sqlquery라는 변수를 생성하고 여기에 다음 쿼리 템플릿을 할당합니다.
DECLARE @sqlquery VARCHAR(2000) SET @sqlquery = 'SELECT * FROM (SELECT Name2, Name1, Value FROM myTable ) base PIVOT (Sum(Value) FOR [Name1] IN (' + @cols + ')) AS finalpivot'
이 접근 방식은 "Name1" 열의 고유 값을 기반으로 PIVOT 절을 동적으로 구성합니다. PIVOT 함수는 각 "Name1" 범주에 대한 "값" 열을 합산하고 결과는 "Name2" 값이 행 머리글 역할을 하고 "Name1" 범주가 열 머리글을 형성하는 테이블입니다.
일반적으로 원칙적으로 PIVOT은 열 중심 구조에서 행 중심 구조로 데이터를 변환해야 할 때마다 활용될 수 있습니다. 이 기술을 사용하면 데이터 분석 및 프레젠테이션 작업을 크게 단순화할 수 있습니다.
위 내용은 SQL Server의 PIVOT 연산자는 어떻게 여러 열의 데이터를 행 기반 형식으로 재구성할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!