SQL을 사용하여 테이블 형식 데이터를 피벗 테이블로 변환: 열 연결
데이터베이스 관리에서 테이블을 피벗하려면 열 중심 형식에서 데이터를 변환해야 합니다. 행 기반 형식으로 변환하여 테이블을 효과적으로 "뒤집습니다". 이 문서에서는 여러 열이 있는 테이블을 원래 열의 값이 연결된 단일 열로 피벗하려는 시나리오에 대해 설명합니다.
ID, TYPE, SUBTYPE, COUNT 및 MONTH, 다음과 같이 정렬:
ID TYPE SUBTYPE COUNT MONTH 1 A Z 1 7/1/2008 1 A Z 3 7/1/2008 2 B C 2 7/2/2008 1 A Z 3 7/2/2008
이 데이터를 TYPE 및 SUBTYPE 열이 있는 피벗 테이블로 변환하는 것이 목표입니다. 새 열로 연결되고 ID와 MONTH의 각 고유 조합에 대해 COUNT 값이 합산됩니다. 예상되는 결과는 다음과 같습니다.
ID A_Z B_C MONTH 1 4 0 7/1/2008 2 0 2 7/2/2008 1 0 3 7/2/2008
SQL Server PIVOT 솔루션
SQL Server 2005는 데이터 피벗을 단순화하는 강력한 PIVOT 및 UNPIVOT 연산자를 제공합니다. 다음 코드 예는 PIVOT 기술을 보여줍니다.
DECLARE @sql AS varchar(max) DECLARE @pivot_list AS varchar(max) DECLARE @select_list AS varchar(max) SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + PIVOT_CODE + ']' ,@select_list = COALESCE(@select_list + ', ', '') + 'ISNULL([' + PIVOT_CODE + '], 0) AS [' + PIVOT_CODE + ']' FROM ( SELECT DISTINCT [TYPE] + '_' + SUBTYPE AS PIVOT_CODE FROM stackoverflow_159456 ) AS PIVOT_CODES SET @sql = ' ;WITH p AS ( SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM([COUNT]) AS [COUNT] FROM stackoverflow_159456 GROUP BY ID, [MONTH], [TYPE] + ''_'' + SUBTYPE ) SELECT ID, [MONTH], ' + @select_list + ' FROM p PIVOT ( SUM([COUNT]) FOR PIVOT_CODE IN ( ' + @pivot_list + ' ) ) AS pvt ' EXEC (@sql)
이 코드에 사용된 동적 SQL 기술은 TYPE 및 SUBTYPE 값의 고유한 조합을 기반으로 PIVOT 문을 자동으로 생성하여 하드 코딩을 피하고 코드를 작성합니다. 유지 관리가 필요 없습니다.
위 내용은 열을 연결하고 값을 합산하여 SQL에서 표 형식 데이터를 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!