ホームページ >データベース >mysql チュートリアル >GROUP BYを使用してDB2で行を列にピボットする方法?
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 サイトの他の関連記事を参照してください。