ホームページ >データベース >mysql チュートリアル >ピボット関数を使用してSQLサーバーの列に行を変換する方法は?

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

Barbara Streisand
Barbara Streisandオリジナル
2025-01-25 12:32:10656ブラウズ

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

SQL Server の PIVOT 関数を使用して行を列に変換する

質問

SQL Server のピボット テーブルは、データを行から列に転置する強力な方法を提供します。ただし、ユーザーは正しいクエリを構築する際に課題に遭遇する可能性があります。

解決策

既知の列値に対して PIVOT 関数を使用します:

事前定義された列の値 (この場合は週番号) については、PIVOT 関数を直接使用できます。

<code class="language-sql">select *
from 
(
  select store, week, xCount
  from yt 
) src
pivot
(
  sum(xcount)
  for week in ([1], [2], [3])
) piv;</code>

ピボット列の値を動的に生成します:

不明な列値 (動的週番号など) を処理するには、動的 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>

結果:

どちらの方法でも同じ結果が生成されます:

| ショップ 1 |

| 101 | 282 |
| 102 | 212 |
| 105 | 78 |
| 109 | 97 |

以上がピボット関数を使用してSQLサーバーの列に行を変換する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。