Je trouve beaucoup plus simple d'utiliser l'agrégation conditionnelle :
select id,
max(case when type = 'A' then value end) as a,
max(case when type = 'B' then value end) as b,
max(case when type = 'C' then value end) as c
from t
group by id;
Vous pouvez insérer les résultats dans un tableau en utilisant create table as
. Cela devrait également fonctionner avec une requête pivot.