I am working on a table like below:
| class | parameter | value |
|---|---|---|
| A | name | John |
| A | city | NY |
| A | year | 2022 |
| B | name | ANNA |
| B | city | NM |
| B | year | 2021 |
I want to save it in new table like this:
| class | name | city | year |
|---|---|---|---|
| A | John | NY | 2022 |
| B | ANNA | NM | 2021 |
I am working on a table like below:
| class | parameter | value |
|---|---|---|
| A | name | John |
| A | city | NY |
| A | year | 2022 |
| B | name | ANNA |
| B | city | NM |
| B | year | 2021 |
I want to save it in new table like this:
| class | name | city | year |
|---|---|---|---|
| A | John | NY | 2022 |
| B | ANNA | NM | 2021 |
You may use conditional aggregation as the following:
SELECT class, MAX(CASE parameter WHEN 'name' THEN value END) name,
MAX(CASE parameter WHEN 'city' THEN value END) city,
MAX(CASE parameter WHEN 'year' THEN value END) year
FROM table_name
GROUP BY class
See a demo, works on both MySQL and SQL Server.