ホームページ > データベース > mysql チュートリアル > SQL Server でテーブルをピボットして列を連結する方法

SQL Server でテーブルをピボットして列を連結する方法

Mary-Kate Olsen
リリース: 2025-01-02 17:04:40
オリジナル
791 人が閲覧しました

How to Pivot a Table and Concatenate Columns in SQL Server?

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

質問:

データベース テーブルを変換するにはどうすればよいですか?次の構造を持つ:

ID    TYPE   SUBTYPE    COUNT   MONTH
 1      A      Z          1       7/1/2008
 1      A      Z          3       7/1/2008
 2      B      C          2       7/2/2008
 1      A      Z          3       7/2/2008
ログイン後にコピー

into次の構造を持つテーブル:

ID    A_Z   B_C   MONTH
1     4     0     7/1/2008
2     0     2     7/2/2008
1     0     3     7/2/2008
ログイン後にコピー

TYPE と SUBTYPE が連結されて新しい列 (例: "A_Z") が形成され、ID と MONTH の値が一致するかどうか COUNT が合計されます?

答え:

SQL Server 2005 が提供するもの質問で説明されている変換を可能にする PIVOT 演算子。詳細な説明は次のとおりです:

  1. ピボット コードの生成: TYPE 値と SUBTYPE 値の個別の組み合わせを決定します。たとえば、['A_Z'].
  2. 動的 SQL の構築: 動的 SQL を使用して、PIVOT 演算子を含むクエリを生成します。
DECLARE @sql AS varchar(max);
SET @sql = '
;WITH p AS (
    SELECT ID, [MONTH], [TYPE] + ''_'' + SUBTYPE AS PIVOT_CODE, SUM(COUNT) AS [COUNT]
    FROM stackoverflow_159456
    GROUP BY ID, [MONTH], [TYPE] + ''_'' + SUBTYPE
)
SELECT ID, [MONTH], ' + @select_list + '
FROM p
PIVOT (
    SUM(COUNT)
    FOR PIVOT_CODE IN (
        ' + @pivot_list + '
    )
) AS pvt
';
ログイン後にコピー
  1. 動的 SQL の実行: 生成された SQL クエリを実行して、

このソリューションは、動的 SQL を利用して、TYPE 値と SUBTYPE 値の一意の組み合わせに基づいて PIVOT クエリを構築し、データベース内の複数のタイプとサブタイプを処理するためのメンテナンス不要のアプローチを提供します。

以上がSQL Server でテーブルをピボットして列を連結する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート