ホームページ >データベース >mysql チュートリアル >SQL Server の PIVOT 関数を使用して、静的週番号と動的週番号の両方を処理して行を列にピボットするにはどうすればよいですか?

SQL Server の PIVOT 関数を使用して、静的週番号と動的週番号の両方を処理して行を列にピボットするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-25 12:26:08324ブラウズ

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>

How Can I Pivot Rows into Columns Using SQL Server's PIVOT Function, Handling Both Static and Dynamic Week Numbers?

以上がSQL Server の PIVOT 関数を使用して、静的週番号と動的週番号の両方を処理して行を列にピボットするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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