Ich finde es viel einfacher, nur die bedingte Aggregation zu verwenden:
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;
Sie können die Ergebnisse mit create table as
in eine Tabelle einfügen . Das sollte auch mit einer Pivot-Abfrage funktionieren.