"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > SQL Server의 행으로 열을 효율적으로 변환하는 방법은 무엇입니까?

SQL Server의 행으로 열을 효율적으로 변환하는 방법은 무엇입니까?

2025-04-13에 게시되었습니다
검색:408

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

SQL Server의 열 변환에 대한 심층적 인 안내서

많은 수의 메트릭 열이 포함 된 테이블을 처리 할 때이 열을 행으로 변환하는 것은 분석 및보고 목적으로 매우 유리합니다. 이 변환에는 데이터를 재건하여 스키마가 다른 새 테이블을 생성하는 것이 포함됩니다.

문제 설명

다음 테이블 구조를 고려하십시오 :

[ID] [EntityID] [Indicator1] [Indicator2] [Indicator3] ... [Indicator150]

목표는이 메트릭 열을 행으로 변환하여 다음 스키마를 사용하여 새 테이블을 만드는 것입니다.

[ID] [EntityId] [IndicatorName] [IndicatorValue]
]]]

unpivot

사용 솔루션

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

UNPIVOT ([unpivot column] FOR [pivot column] IN ([pivot values]))

이 예제에서, 비 vIt 열은 표시기 값 (예 : "indicator1", "indicator2"등)을 나타내며, 피벗 열은 열 이름 자체를 나타냅니다. 다음 쿼리는 비 큐트 사용 방법을 보여줍니다.
select id, entityId,
  indicatorname,
  indicatorvalue
from yourtable
unpivot
(
  indicatorvalue
  for indicatorname in (Indicator1, Indicator2, Indicator3)
) unpiv;

이 쿼리를 수행하면 메트릭 열이 행으로 변환되고 메트릭 이름과 값은 새 열로 채워집니다.

대안

unpivot 외에도 열을 행으로 변환하는 다른 방법이 있습니다.
  • Cross Apply Union All :
  • 이 방법에는 Cross Apply 및 Union을 사용하여 각 메트릭 이름과 값을 명시 적으로 지정합니다.
  • Cross는 값을 사용하여 적용됩니다.
  • Dynamic SQL : 많은 수의 표시기 열이있는 상황의 경우 동적 SQL을 사용하여 쿼리 문을 자동으로 생성 할 수 있습니다.

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

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3