집 >데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 열을 행으로 효율적으로 변환하는 방법은 무엇입니까?
SQL Server: 열을 행으로 변환
SQL Server에서는 여러 표시기 열이 포함된 테이블을 각 표시기 및 해당 값에 대한 행 구조로 변환해야 할 수 있습니다. 이는 여러 기술을 통해 달성될 수 있습니다.
UNPIVOT 기능
UNPIVOT 함수는 열을 행으로 변환하는 간단한 방법입니다. 지정된 열을 행으로 변환합니다. 원래 열 이름은 "indicatorname"이라는 레이블이 붙은 새 행이 됩니다. 원래 열의 값은 "indicatorvalue"라는 레이블이 붙은 행이 됩니다.
<code class="language-sql">SELECT id, entityId, indicatorname, indicatorvalue FROM yourtable UNPIVOT ( indicatorvalue FOR indicatorname IN (Indicator1, Indicator2, Indicator3) ) unpiv;</code>
UNION ALL의 CROSS APPLY를 활용하세요
또 다른 방법은 CROSS APPLY를 UNION ALL과 결합하는 것입니다.
<code class="language-sql">SELECT id, entityid, indicatorname, indicatorvalue FROM yourtable CROSS APPLY ( SELECT 'Indicator1', Indicator1 UNION ALL SELECT 'Indicator2', Indicator2 UNION ALL SELECT 'Indicator3', Indicator3 UNION ALL SELECT 'Indicator4', Indicator4 ) c (indicatorname, indicatorvalue);</code>
VALUES 절을 사용한 CROSS APPLY
SQL Server 버전에서 지원하는 경우 CROSS APPLY와 함께 VALUES 절을 활용할 수도 있습니다.
<code class="language-sql">SELECT id, entityid, indicatorname, indicatorvalue FROM yourtable CROSS APPLY ( VALUES ('Indicator1', Indicator1), ('Indicator2', Indicator2), ('Indicator3', Indicator3), ('Indicator4', Indicator4) ) c (indicatorname, indicatorvalue);</code>
동적 SQL
지표 열이 많은 테이블의 경우 필요한 SQL 문을 수동으로 생성하는 것은 지루할 수 있습니다. 동적 SQL은 이 프로세스를 자동화할 수 있습니다.
<code class="language-sql">DECLARE @colsUnpivot AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) SELECT @colsUnpivot = STUFF((SELECT ',' + QUOTENAME(C.column_name) FROM INFORMATION_SCHEMA.COLUMNS AS C WHERE C.table_name = 'yourtable' AND C.column_name LIKE 'Indicator%' FOR XML PATH('')), 1, 1, '') SET @query = 'SELECT id, entityId, indicatorname, indicatorvalue FROM yourtable UNPIVOT ( indicatorvalue FOR indicatorname IN (' + @colsunpivot +') ) u' EXEC sp_executesql @query;</code>
이러한 기술은 SQL Server에서 열을 행으로 변환하는 유연한 방법을 제공하고 다양한 테이블 구조와 데이터 요구 사항에 적응할 수 있습니다.
위 내용은 SQL Server에서 열을 행으로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!