ホームページ >データベース >mysql チュートリアル >PIVOT 演算子を使用して SQL Server で列をピボットおよび連結する方法

PIVOT 演算子を使用して SQL Server で列をピボットおよび連結する方法

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-01 12:23:13719ブラウズ

How to Pivot and Concatenate Columns in SQL Server Using the PIVOT Operator?

SQL Server のピボット テーブルと列の連結

指定された SQL Server データベースには、ID、TYPE、SUBTYPE、COUNT、および MONTH のレコードが含まれています列。目標は、このデータを、TYPE と SUBTYPE が新しい列に連結され、一致する ID と MONTH 値に対して COUNT が合計されるピボット テーブルに変換することです。

これを実現するために、SQL Server は動的に PIVOT 演算子を提供します。指定された値に基づいて列を生成します。 PIVOT を使用してこの問題に対処する方法は次のとおりです。

DECLARE @sql AS VARCHAR(MAX);
DECLARE @pivot_list AS VARCHAR(MAX);
DECLARE @select_list AS VARCHAR(MAX);

SELECT @pivot_list = COALESCE(@pivot_list + ', ', '') + '[' + PIVOT_CODE + ']',
       @select_list = COALESCE(@select_list + ', ', '') + 'ISNULL([' + PIVOT_CODE + '], 0) AS [' + PIVOT_CODE + ']'
FROM (
    SELECT DISTINCT [TYPE] + '_' + SUBTYPE AS PIVOT_CODE
    FROM TableName
) AS PIVOT_CODES;

SET @sql = ';WITH p AS (
    SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM([COUNT]) AS [COUNT]
    FROM TableName
    GROUP BY ID, [MONTH], [TYPE] + ''_'' + SUBTYPE
)
SELECT ID, [MONTH], ' + @select_list + '
FROM p
PIVOT (
    SUM([COUNT])
    FOR PIVOT_CODE IN (
        ' + @pivot_list + '
    )
) AS pvt';

EXEC (@sql);

このコードは、必要な列リストを動的に生成し、PIVOT 演算子を使用してピボット テーブルを作成します。結果の出力は、連結された TYPE 列と SUBTYPE 列、および合計された COUNT 値を含む目的の形式になります。

以上がPIVOT 演算子を使用して SQL Server で列をピボットおよび連結する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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