MySQL Unpivotのやり方:複数列を1列に変換する方法
MySQLでは、データの逆転操作を実現するための組み込みのUNPIVOT関数はありません。しかし、UNION ALLステートメントを使用して同様の機能を実現することができます。以下は例です:
表に以下のデータが含まれていると仮定するとします。
| id | name | score1 | score2 | score3 |
|----|------|--------|--------|--------|
| 1 | Alice| 80 | 85 | 90 |
| 2 | Bob | 75 | 70 | 80 |
| 3 | Chris| 90 | 95 | 85 |
データを逆にするには、次のSQLステートメントを使用してください:
SELECT id, name, 'score1' AS score_type, score1 AS score
FROM table_name
UNION ALL
SELECT id, name, 'score2' AS score_type, score2 AS score
FROM table_name
UNION ALL
SELECT id, name, 'score3' AS score_type, score3 AS score
FROM table_name
上記のSQL文を実行すると、以下の結果が得られます。
| id | name | score_type | score |
|----|------|------------|-------|
| 1 | Alice| score1 | 80 |
| 1 | Alice| score2 | 85 |
| 1 | Alice| score3 | 90 |
| 2 | Bob | score1 | 75 |
| 2 | Bob | score2 | 70 |
| 2 | Bob | score3 | 80 |
| 3 | Chris| score1 | 90 |
| 3 | Chris| score2 | 95 |
| 3 | Chris| score3 | 85 |
元のテーブルの列を行に変換する操作が実現されました。