MySQL 行データを列データに変換する方法
MySQLでは、PIVOT操作を使って行データを列に変換できます。一般的な方法は次のとおりです。
まず、変換するデータを含むテーブルを作成します。例えば、data_table というテーブルがあり、id、category、value の 3 つのフィールドがあるとします。
CREATE TABLE data_table (
id INT,
category VARCHAR(50),
value INT
);
INSERT INTO data_table (id, category, value)
VALUES
(1, 'A', 10),
(1, 'B', 20),
(1, 'C', 30),
(2, 'A', 40),
(2, 'B', 50),
(2, 'C', 60);
次に、CASE文と集計関数を用いて行データを列に変換します。この例では、category フィールドの値を列名として使用します。value フィールドは SUM 関数で集計します。
SELECT
id,
SUM(CASE WHEN category = 'A' THEN value END) AS A,
SUM(CASE WHEN category = 'B' THEN value END) AS B,
SUM(CASE WHEN category = 'C' THEN value END) AS C
FROM data_table
GROUP BY id;
上記クエリは、以下のような結果を生成します。
idABC1
10
20
302
40
50
60
上記のクエリでは、SUM関数を使用して各カテゴリーの値を合計し、CASE文を使用して対応する値を適切な列に配置しています。GROUP BY句では、IDでグループ化しています。
これにより、縦データを列データに正常に変換しました。