> 데이터 베이스 > MySQL 튜토리얼 > 열을 연결하고 값을 합산하여 SQL에서 표 형식 데이터를 피벗하는 방법은 무엇입니까?

열을 연결하고 값을 합산하여 SQL에서 표 형식 데이터를 피벗하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-04 17:39:41
원래의
477명이 탐색했습니다.

How to Pivot Tabular Data in SQL by Concatenating Columns and Summing Values?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿