>데이터 베이스 >MySQL 튜토리얼 >SQL Server에서 열을 행으로 효율적으로 변환하려면 어떻게 해야 합니까?

SQL Server에서 열을 행으로 효율적으로 변환하려면 어떻게 해야 합니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-21 19:11:07655검색

How Can I Efficiently Convert Columns to Rows in SQL Server?

SQL Server의 열 변환에 대한 심층 가이드

많은 수의 측정항목 열이 포함된 테이블로 작업할 때 이러한 열을 행으로 변환하면 분석 및 보고 목적으로 매우 유용할 수 있습니다. 이 변환에는 다른 스키마를 사용하여 새 테이블을 생성하기 위해 데이터를 재구성하는 작업이 포함됩니다.

문제 설명

다음 테이블 스키마를 고려하세요.

<code>[ID] [EntityID] [Indicator1] [Indicator2] [Indicator3] ... [Indicator150]</code>

목표는 이러한 측정항목 열을 행으로 변환하여 다음 스키마를 사용하여 새 테이블을 만드는 것입니다.

<code>[ID] [EntityId] [IndicatorName] [IndicatorValue]</code>

UNPIVOT을 이용한 솔루션

이 작업을 수행하는 우아한 솔루션은 UNPIVOT 기능을 활용하는 것입니다. UNPIVOT의 구문은 다음과 같습니다.

<code>UNPIVOT ([unpivot column] FOR [pivot column] IN ([pivot values]))</code>

이 예에서 unpivot 열은 표시기 값(예: "Indicator1", "Indicator2" 등)을 나타내고, 피벗 열은 열 이름 자체를 나타냅니다. 다음 쿼리는 UNPIVOT을 사용하는 방법을 보여줍니다.

<code>select id, entityId,
  indicatorname,
  indicatorvalue
from yourtable
unpivot
(
  indicatorvalue
  for indicatorname in (Indicator1, Indicator2, Indicator3)
) unpiv;</code>

이 쿼리를 실행하면 측정항목 열이 행으로 변환되고 측정항목 이름과 값이 새 열을 채웁니다.

대안

UNPIVOT 외에도 열을 행으로 변환하는 다른 방법이 있습니다.

  • UNION ALL을 사용한 CROSS APPLY: 이 방법에는 CROSS APPLY 및 UNION ALL을 사용하여 각 지표 이름과 값을 명시적으로 지정하는 방법이 포함됩니다.
  • CROSS APPLY USING VALUES: 위 방법과 유사하지만 CROSS APPLY에서 VALUES 절을 사용합니다.
  • 동적 SQL: 지표 열 수가 많은 상황에서는 동적 SQL을 사용하여 쿼리 문을 자동으로 생성할 수 있습니다.

솔루션 선택은 특정 요구 사항과 사용되는 SQL Server 버전에 따라 다릅니다.

위 내용은 SQL Server에서 열을 행으로 효율적으로 변환하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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