Tôi thấy việc sử dụng kết hợp có điều kiện sẽ dễ dàng hơn nhiều:
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;
Bạn có thể chèn kết quả vào bảng bằng cách sử dụng create table as
. Điều đó cũng sẽ hoạt động với một truy vấn xoay.