데이터베이스 열을 행으로 변환하는 것은 데이터 분석 및 재구성에서 중요한 기술입니다. SQL Server에서 이 변환을 수행하는 방법에는 여러 가지가 있으며 각각 고유한 장점과 고려 사항이 있습니다.
방법 1: UNPIVOT 함수
UNPIVOT 함수는 기본적으로 열에서 행으로의 변환을 지원합니다. UNPIVOT의 구문은 다음과 같습니다.
<code class="language-sql">UNPIVOT (indicatorvalue FOR indicatorname IN (Indicator1, Indicator2, Indicator3, ...)) AS unpiv</code>
예:
<code class="language-sql">SELECT id, entityId, indicatorname, indicatorvalue FROM yourtable UNPIVOT ( indicatorvalue FOR indicatorname IN (Indicator1, Indicator2, Indicator3) ) unpiv;</code>
방법 2: UNION ALL의 CROSS APPLY 사용
UNION ALL을 사용한 CROSS APPLY는 열을 행으로 변환하는 또 다른 방법입니다. 제공된 열을 기반으로 행을 반복적으로 결합합니다.
<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>
방법 3: VALUES의 CROSS APPLY 사용
이 방법은 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>
방법 4: 동적 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!