I have mysql table like:
ID | KEY_ID | KEY_IDENTIY | DATA_VAL |
1 | 1 | NAME | Chris |
2 | 1 | AGE | 5 |
3 | 2 | NAME | Ron |
4 | 2 | AGE | 12 |
5 | 3 | NAME | James |
6 | 3 | AGE | 16 |
7 | 5 | NAME | Jerry |
8 | 5 | AGE | 7 |
To get a result as follows
1 | Chris | 5 |
2 | Ron | 12 |
3 | James | 16 |
5 | Jerry | 7 |
You need following query
select KEY_ID, max(case when KEY_IDENTIY = 'NAME' then DATA_VAL end) as name, max(case when KEY_IDENTIY = 'AGE' then DATA_VAL end) as age from tablename group by KEY_ID