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

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

Patricia Arquette
풀어 주다: 2025-01-21 19:27:14
원래의
518명이 탐색했습니다.

How Can I Convert Columns to Rows in SQL Server?

SQL Server의 열-행 변환

데이터베이스 열을 행으로 변환하는 것은 데이터 분석 및 재구성에서 중요한 기술입니다. 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿