SQL Serverのピボットテーブルは、行から列にデータを転置する強力な方法を提供します。ただし、ユーザーは正しいクエリを構築する際に課題に遭遇する場合があります。
既知の列値にピボット関数を使用:
事前定義された列値(この場合は週数)の場合、ピボット関数を直接使用できます:
select *
from
(
select store, week, xCount
from yt
) src
pivot
(
sum(xcount)
for week in ([1], [2], [3])
) piv;
動的に視点を生成する列の値:
不明な列値(動的週など)を処理するには、動的な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);
結果:
両方の方法が同じ結果を生み出します:|
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3