>데이터 베이스 >MySQL 튜토리얼 >T-SQL에서 데이터를 동적으로 피벗하는 방법은 무엇입니까?

T-SQL에서 데이터를 동적으로 피벗하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2025-01-14 20:10:48574검색

How to Dynamically Pivot Data in T-SQL?

T-SQL의 동적 피벗

데이터 처리 분야에서 동적 피벗은 데이터를 행 형식에서 열 형식으로 변환하는 데 중요한 역할을 합니다. 이는 집계되고 구조화된 방식으로 데이터를 표시해야 할 때 특히 유용합니다.

다음 형식의 데이터가 포함된 테이블이 있다고 가정해 보겠습니다.

ItemID ColumnName Value
1 name Peter
1 phone 12345678
1 email [email protected]
2 name John
2 phone 87654321
2 email [email protected]
3 name Sarah
3 phone 55667788
3 email [email protected]

귀하의 목표는 이 표를 다음 형식으로 변환하는 것입니다.

ItemID name phone email
1 Peter 12345678 [email protected]
2 John 87654321 [email protected]
3 Sarah 55667788 [email protected]

T-SQL의 동적 피벗을 사용하면 정적 SQL 문 없이도 이러한 변환을 동적으로 구현할 수 있습니다. 다음 코드는 이 작업을 수행하는 방법을 보여줍니다.

<code class="language-sql">CREATE TABLE #Table (
        ID INT,
        ColumnName VARCHAR(250),
        Value VARCHAR(250)
)

INSERT INTO #Table SELECT 1,'name','Peter' 
INSERT INTO #Table SELECT 1,'phone','12345678' 
INSERT INTO #Table SELECT 1,'email','[email protected]' 
INSERT INTO #Table SELECT 2,'name','John' 
INSERT INTO #Table SELECT 2,'phone','87654321' 
INSERT INTO #Table SELECT 2,'email','[email protected]' 
INSERT INTO #Table SELECT 3,'name','Sarah' 
INSERT INTO #Table SELECT 3,'phone','55667788' 
INSERT INTO #Table SELECT 3,'email','[email protected]' 

DECLARE @cols NVARCHAR(2000) 
DECLARE @query NVARCHAR(4000) 

SELECT  @cols = STUFF(( SELECT DISTINCT TOP 100 PERCENT 
                                '],[' + t.ColumnName 
                        FROM    #Table AS t 
                        FOR XML PATH('') 
                      ), 1, 2, '') + ']' 

SET @query = N'SELECT ID,'+ @cols +' FROM 
(SELECT t1.ID,t1.ColumnName , t1.Value FROM #Table AS t1) p 
PIVOT (MAX([Value]) FOR ColumnName IN ( '+ @cols +' )) 
AS pvt;' 

EXECUTE(@query)

DROP TABLE #Table</code>

이 코드에서는 STUFF 및 EXECUTE 함수를 사용하여 동적 SQL 문을 구성합니다. 구성된 쿼리는 테이블의 다양한 열 이름을 기반으로 PIVOT 문을 동적으로 생성합니다. MAX() 집계 함수는 각 열의 최신 값이 반환되도록 합니다.

최종 결과는 데이터를 피벗 형식으로 표시하기 위한 요구 사항을 충족하는 변환된 테이블입니다. 이 기술은 대규모 데이터 세트와 복잡한 데이터 구조로 작업할 때 특히 유용합니다.

위 내용은 T-SQL에서 데이터를 동적으로 피벗하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.