ホームページ >データベース >mysql チュートリアル >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 サイトの他の関連記事を参照してください。