ホームページ >データベース >mysql チュートリアル >GROUP BYを使用してDB2で行を列にピボットする方法?

GROUP BYを使用してDB2で行を列にピボットする方法?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-05 10:32:41773ブラウズ

How to Pivot Rows into Columns in DB2 Using GROUP BY?

DB2 でのピボット

この質問は、DB2 テーブルの行を列に転置することを中心に展開しています。提供されるデータは、ItemID、Item、および Value 列で構造化されています。目的は、このデータを転置形式に変換することです。この形式では、Meeting、Advise、および NoAdvise の値が列として配置され、ItemID が行識別子として機能します。

このピボットを実行する 1 つのアプローチは、次のとおりです。 GROUP BY 句を複数の MAX() 式とともに使用します。 MAX()を使用し、CASE文内で項目タイプごとに条件を指定することで、対応する値を取得できます。例:

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 table_name
GROUP BY ItemID

このクエリは、ItemID が主キーとして機能し、Meeting、Advise、および NoAdvise が列ヘッダーとなる、目的の転置形式を生成します。 GROUP BY 句を使用すると、データが確実に項目 ID によってグループ化され、項目ごとに個別の行が提供されます。

あるいは、このフォーラムで現在受け入れられている回答で提案されているように、複数の相関サブクエリを利用することで同じ結果を得ることができます。 。ただし、特に大規模なデータセットの場合、サブクエリのアプローチでは、より効率的な GROUP BY ソリューションと比較してパフォーマンスの問題が発生する可能性があることに注意してください。

以上がGROUP BYを使用してDB2で行を列にピボットする方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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