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 중국어 웹사이트의 기타 관련 기사를 참조하세요!