ホームページ >データベース >mysql チュートリアル >CASE と MAX() を使用して MySQL で行を列にピボットする方法

CASE と MAX() を使用して MySQL で行を列にピボットする方法

Barbara Streisand
Barbara Streisandオリジナル
2024-12-08 16:58:10651ブラウズ

How to Pivot Rows into Columns in MySQL Using CASE and MAX()?

MySQL で行を列に変換する

次のテーブルを持つデータベースを考えます。

CREATE TABLE mytable (
  ID INTEGER PRIMARY KEY,
  Type INTEGER,
  Email VARCHAR(255),
  Degignation VARCHAR(255)
);

目標は次のとおりです。データを行から列に変換します。タイプ列が列ヘッダーになり、最後の列が行値になります。予想される出力は次のようになります:

ID                202         234                     239        Email
1000000000   Entrepreneur  Engineering,Development    CTO       [email protected]

この変換を実現するために、MySQL はかなり複雑なクエリを提供します:

SELECT ID, 
 MAX(CASE Type WHEN 202 THEN Degignation END) AS `202`,
 MAX(CASE Type WHEN 234 THEN Degignation END) AS `234`,
 MAX(CASE Type WHEN 239 THEN Degignation END) AS `239`,
 Email
FROM mytable
GROUP BY ID, Email;

このクエリは CASE 式を利用して各行の Type 列をチェックします。そして、対応する Degignation 値を結果セット内の適切な列に割り当てます。 MAX() 関数は、各 Type 列に対して最新 (または最大) 値のみが返されるようにするために使用されます。

クエリには列ヘッダーの固定セットが必要であることに注意することが重要です。型の値は事前にわかっている必要があります。 SQL は、クエリ実行中に検出されたデータ値に基づく動的な列の追加をサポートしていません。

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

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