Say I have a BQ table containing the following information
| id | test.name | test.score | |---- |----------- |------------ | | 1 | a
One option could be using conditional aggregation
select id, max(case when test.name='a' then test.score end) as a, max(case when test.name='b' then test.score end) as b, max(case when test.name='c' then test.score end) as c from ( select a.id, t from `table` as a, unnest(test) as t )A group by id