SQL Server 테이블 열을 행으로 변환
테이블 열을 행으로 변환하는 것은 매우 유용한 데이터 처리 기술입니다. 이 문서에서는 SQL Server에서 이 작업을 수행하는 여러 가지 방법을 설명합니다.
UNPIVOT 기능
UNPIVOT 함수는 명시적으로 열을 행으로 변환하므로 유연한 데이터 재구성이 가능합니다. 예를 들어 예제 테이블 스키마에서 'Indicator1'을 'Indicator150' 열로 변환하려면 다음을 수행하세요.
<code class="language-sql">select id, entityId, indicatorname, indicatorvalue from yourtable unpivot ( indicatorvalue for indicatorname in (Indicator1, Indicator2, Indicator3) ) unpiv;</code>
CROSS APPLY 및 UNION ALL 사용
또는 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>
CROSS APPLY 및 VALUES 절 사용
지원되는 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을 사용하여 프로그래밍 방식으로 쿼리를 생성하는 것이 좋습니다.
<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 테이블 열을 행으로 효율적으로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!