> 데이터 베이스 > MySQL 튜토리얼 > SQL Server에서 데이터를 동적으로 피봇하는 방법은 무엇입니까?

SQL Server에서 데이터를 동적으로 피봇하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-25 18:52:11
원래의
211명이 탐색했습니다.

How to Dynamically Pivot Data in SQL Server?

SQL Server 동적 피벗 쿼리

이 문서에서는 범주를 열로, 날짜를 행으로 사용하여 데이터 세트를 세로 형식에서 가로 형식으로 변환하는 방법을 설명합니다. 이는 일반적으로 PIVOT 연산자를 사용하여 수행됩니다.

다음 SQL 코드는 temp이라는 임시 테이블에서 데이터 세트를 초기화합니다. 동적 SQL은 PIVOT 쿼리를 작성하는 데 사용됩니다. @cols변수는 다양한 카테고리를 쉼표로 구분된 문자열로 연결합니다. @query변수는 날짜별로 그룹화하고 카테고리별로 피벗하여 실제 PIVOT 쿼리를 작성합니다.

<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);

SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category) 
            FROM temp c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT date, ' + @cols + ' from 
            (
                select date
                    , amount
                    , category
                from temp
           ) x
            pivot 
            (
                 max(amount)
                for category in (' + @cols + ')
            ) p '</code>
로그인 후 복사

이 쿼리를 실행하면 원하는 결과가 생성됩니다.

<code>日期                        ABC         DEF    GHI
2012-01-01 00:00:00.000     1000.00     NULL    NULL
2012-02-01 00:00:00.000     NULL        500.00  800.00
2012-02-10 00:00:00.000     NULL        700.00  NULL
2012-03-01 00:00:00.000     1100.00     NULL    NULL</code>
로그인 후 복사

이 동적 접근 방식을 사용하면 쿼리 구조를 변경하지 않고도 필요에 따라 카테고리를 조정할 수 있습니다. 성능 문제를 방지하려면 사용 후 임시 테이블을 삭제하는 것을 잊지 마세요.

위 내용은 SQL Server에서 데이터를 동적으로 피봇하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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