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

동적 쿼리를 사용하여 SQL Server에서 데이터를 동적으로 피벗하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2025-01-25 18:56:09
원래의
158명이 탐색했습니다.

How to Dynamically Pivot Data in SQL Server Using a Dynamic Query?

동적 쿼리를 사용하는 SQL Server의 동적 피벗 데이터

이 도움말에서는 날짜, 카테고리 및 금액 열의 데이터를 날짜 및 카테고리별로 금액을 그룹화하는 보다 구조화된 형식으로 변환하는 방법을 설명합니다.

이를 위해 동적 피벗 쿼리를 사용할 수 있습니다. 피벗은 테이블의 행을 열로 회전할 수 있는 SQL Server의 기능입니다. 이 경우 피벗 포인트는 날짜 열이고 결과 열은 범주가 됩니다.

<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX);</code>
로그인 후 복사

동적 피벗 쿼리를 작성하려면 먼저 두 개의 변수를 정의합니다. @cols는 카테고리를 저장하고 @query는 최종 쿼리를 저장합니다.

<code class="language-sql">SET @cols = STUFF((SELECT distinct ',' + QUOTENAME(c.category) 
            FROM temp c
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')</code>
로그인 후 복사

다음으로 다양한 카테고리를 쉼표로 연결하고 큰따옴표로 묶어서 @cols 변수를 만듭니다.

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

마지막으로 쿼리 문자열을 @query에 할당합니다. 쿼리는 날짜 열과 모든 범주를 열로 선택하여 시작됩니다. 그런 다음 PIVOT을 사용하여 날짜 열을 행 머리글로, 범주를 열 머리글로 사용하여 데이터를 회전합니다.

<code class="language-sql">execute(@query)</code>
로그인 후 복사

@query을 실행하면 필요에 따라 데이터를 피벗하여 원하는 결과가 반환됩니다.

<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으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿