ホームページ >データベース >mysql チュートリアル >SQL Serverのピボット関数を使用して行を列に変換するにはどうすればよいですか?

SQL Serverのピボット関数を使用して行を列に変換するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-25 12:17:14825ブラウズ

How Can I Use SQL Server's PIVOT Function to Transform Rows into Columns?

データ変換のための SQL Server の PIVOT 関数をマスターする

SQL Server の PIVOT 関数は、データを再構築する強力な方法を提供し、行を列に変換して分析とレポートを改善します。これは、よりユーザーフレンドリーな表形式でデータを表示する必要がある場合に特に役立ちます。

店舗番号、週番号、および売上高の列を持つ売上高を保持する一時テーブルを想像してください。このデータを店舗を縦方向に、週を横方向にリストして表示するには、次の手順に従います。

1.週番号を動的に識別する

週番号は可変であるため、最初にデータセット内に存在する一意の週番号を決定する必要があります。 これは以下を使用して実現できます:

<code class="language-sql">SELECT DISTINCT Week FROM yt;</code>

2.動的 SQL クエリの構築

次に、動的 SQL クエリを構築します。これには、PIVOT 操作の列名を含む文字列の作成が含まれます。 次のコードはこの文字列を生成します:

<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,'');</code>

3. PIVOT クエリの構築

次に、動的に生成された列文字列を組み込んだ PIVOT クエリ自体を構築します。

<code class="language-sql">SET @query = 'SELECT store,' + @cols + ' FROM 
             (
                SELECT store, week, xCount
                FROM yt
            ) x
            PIVOT 
            (
                SUM(xCount)
                FOR week IN (' + @cols + ')
            ) p;';</code>

4. PIVOT クエリの実行

最後に、以下を使用して動的 PIVOT クエリを実行します。

<code class="language-sql">EXECUTE(@query);</code>

結果:

出力は、最初の列に店舗番号、列ヘッダーに週番号を示す表になります。 対応する売上金額が表のセルに入力され、元のデータが効果的に要約されます。

SQL Server の PIVOT 関数を利用すると、行指向のデータをより解釈および分析しやすい列形式に効率的に変換でき、データのレポート作成と分析のタスクが簡素化されます。

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

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