SQL Server의 PIVOT 함수: 행을 열로 변환하고 정적 및 동적 주 번호를 처리합니다
배경:
매장 번호, 주 번호 및 해당 합계를 포함하는 여러 열이 있는 임시 테이블이 있습니다. 주 번호는 동적이므로 데이터를 표 형식으로 전환하는 것이 어렵습니다.
해결책:
SQL Server에서 PIVOT
함수를 사용하여 행을 열로 변환하려면 다음 단계를 따르세요.
1. 고정 주 번호:
주 번호를 알고 있는 경우 다음 하드코딩된 쿼리를 사용하세요.
<code class="language-sql">SELECT * FROM ( SELECT store, week, xCount FROM yt ) src PIVOT ( SUM(xcount) FOR week IN ([1], [2], [3]) ) piv;</code>
2. 동적 주 번호:
주 번호가 동적이면 동적 SQL을 사용하세요.
<code class="language-sql">DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHAR(MAX); SELECT @cols = STUFF((SELECT ',' + QUOTENAME(Week) FROM yt GROUP BY Week ORDER BY Week FOR XML PATH(''), TYPE ).VALUE('.', 'NVARCHAR(MAX)') ,1,1,''); SET @query = 'SELECT store,' + @cols + ' FROM ( SELECT store, week, xCount FROM yt ) x PIVOT ( SUM(xCount) FOR week IN (' + @cols + ') ) p '; EXECUTE(@query);</code>
결과:
두 쿼리 모두 왼쪽에 매장 번호가, 상단에 주 번호가 있는 피벗 테이블을 반환합니다. 각 셀에는 해당 매장 및 주 번호에 대한 "xCount"의 합계가 포함됩니다.
<code>| STORE | 1 | 2 | 3 | --------------------------- | 101 | 138 | 282 | 220 | | 102 | 96 | 212 | 123 | | 105 | 37 | 78 | 60 | | 109 | 59 | 97 | 87 |</code>
위 내용은 정적 및 동적 주 번호를 모두 처리하면서 SQL Server의 PIVOT 함수를 사용하여 행을 열로 피벗하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!