作成日:2021-09-25, 更新日:2021-09-25
やりたいこと
▼こんなテーブルがあって・・・
key | value |
---|---|
f_name | シマウマ |
p_name | 太郎 |
age | 7 |
sex | 男 |
▼こんなレコードにしたい
f_name | p_name | age | sex |
---|---|---|---|
シマウマ | 太郎 | 7 | 男 |
SQL
▼CASE文をMAXで囲んであげる
SELECT MAX(CASE WHEN `key`='f_name' THEN `value` ELSE '-empty-' END) AS f_name, MAX(CASE WHEN `key`='p_name' THEN `value` ELSE '-empty-' END) AS p_name, MAX(CASE WHEN `key`='age' THEN `value` ELSE '-empty-' END) AS age, MAX(CASE WHEN `key`='sex' THEN `value` ELSE '-empty-' END) AS sex FROM `〇〇〇`;
グループ化
▼ユーザーごとにキーバリューがある
user_id | key | value |
---|---|---|
1 | f_name | シマウマ |
1 | p_name | 太郎 |
2 | f_name | シマウマ |
2 | p_name | 花子 |
1 | age | 7 |
SELECT MAX(CASE WHEN `key`='f_name' THEN `value` ELSE '-empty-' END) AS f_name, MAX(CASE WHEN `key`='p_name' THEN `value` ELSE '-empty-' END) AS p_name, MAX(CASE WHEN `key`='age' THEN `value` ELSE '-empty-' END) AS age, MAX(CASE WHEN `key`='sex' THEN `value` ELSE '-empty-' END) AS sex FROM `〇〇〇` GROUP BY `user_id`;