「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > ピボット関数を使用してSQLサーバーの列に行を変換する方法は?

ピボット関数を使用してSQLサーバーの列に行を変換する方法は?

2025-03-22に投稿されました
ブラウズ:928

How to Convert Rows to Columns in SQL Server Using the PIVOT Function?

sql serverのピボット関数を使用して行を列に変換します

質問

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);

結果:

両方の方法が同じ結果を生み出します:

|

| | 102 |。 | 105 |。 | 109 |。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3