Um único
SELECT
com um LATERAL
juntar-se a um VALUES
expressão faz o trabalho:SELECT p.id, v.*
FROM price_list p
, LATERAL (
VALUES
('type_a', p.price_type_a)
, ('type_b', p.price_type_b)
, ('type_c', p.price_type_c)
) v (price_type, price);
Relacionado:
- Converter uma linha em várias linhas com menos colunas
- SELECT DISTINCT em várias colunas