ホームページ >データベース >mysql チュートリアル >DB2 で行を列に転置するにはどうすればよいですか?

DB2 で行を列に転置するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-30 15:39:18631ブラウズ

How to Transpose Rows into Columns in DB2?

DB2 での行の列への転置

データベース内のデータを操作する場合、行を転置する、つまり行と列を反転することが必要になる場合があります。これは、データ分析、レポート作成、その他の目的に役立ちます。

行を列に転置したい DB2 テーブルがある場合、使用できる方法がいくつかあります。 1 つのアプローチは、相関サブクエリを使用することです。これは、小さなデータセットの場合に効率的です。

SELECT 
  A.ItemID,
  MAX(CASE WHEN A.Item = 'Meeting'  THEN Value END) AS Meeting,
  MAX(CASE WHEN A.Item = 'Advise'   THEN Value END) AS Advise,
  MAX(CASE WHEN A.Item = 'NoAdvise' THEN Value END) AS NoAdvise
FROM A
GROUP BY A.ItemID

このクエリは、相関サブクエリを使用して、各行の各項目の最大値を見つけます。 MAX() 関数は値を集計するために使用され、CASE ステートメントは値を割り当てる列を決定するために使用されます。

行を列に転置するもう 1 つの方法は、集計とピボットを組み合わせて使用​​することです。機能。このアプローチは、単一の SQL ステートメントを使用して転置を実行するため、大規模なデータセットの場合により効率的です。

SELECT ItemID,
       MAX(CASE WHEN Item = 'Meeting'  THEN Value END) AS Meeting,
       MAX(CASE WHEN Item = 'Advise'   THEN Value END) AS Advise,
       MAX(CASE WHEN Item = 'NoAdvise' THEN Value END) AS NoAdvise
FROM (
    SELECT ItemID, Item, Value
    FROM TableName
) AS t
GROUP BY ItemID
PIVOT (MAX(Value) FOR Item IN ('Meeting', 'Advise', 'NoAdvise'))

このクエリでは、PIVOT() 関数を使用してデータを転置します。 PIVOT() 関数は 2 つの引数を取ります。ピボットする列 (この場合は、Item) と、新しい列に含める値のリスト (この場合は、Meeting、Advise、および NoAdvise) です。

以上がDB2 で行を列に転置するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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