I have a schema like:
[ad_id] . [name] . [valueofname]
1 . name . \"brian\"
1 . age . \"23\"
2 . job . \"IT\"
2 .
You can use conditional aggregation:
select ad_id,
max(case when name = 'name' then valueofname end) as name,
max(case when name = 'age' then valueofname end) as age,
max(case when name = 'birthday' then valueofname end) as birthday,
max(case when name = 'job' then valueofname end) as job
from t
group by ad_id;
In SQL Server, you can also do something similar with pivot
.