집 >데이터 베이스 >MySQL 튜토리얼 >T-SQL에서 데이터를 동적으로 피벗하는 방법은 무엇입니까?
T-SQL의 동적 피벗
데이터 처리 분야에서 동적 피벗은 데이터를 행 형식에서 열 형식으로 변환하는 데 중요한 역할을 합니다. 이는 집계되고 구조화된 방식으로 데이터를 표시해야 할 때 특히 유용합니다.
다음 형식의 데이터가 포함된 테이블이 있다고 가정해 보겠습니다.
ItemID | ColumnName | Value |
---|---|---|
1 | name | Peter |
1 | phone | 12345678 |
1 | [email protected] | |
2 | name | John |
2 | phone | 87654321 |
2 | [email protected] | |
3 | name | Sarah |
3 | phone | 55667788 |
3 | [email protected] |
귀하의 목표는 이 표를 다음 형식으로 변환하는 것입니다.
ItemID | name | phone | |
---|---|---|---|
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!