PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

Postgres :convertir une seule ligne en plusieurs lignes (unpivot)

Un seul SELECT avec un LATERAL joindre à un VALUES l'expression fait le travail :

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);

Connexe :

  • Convertir une ligne en plusieurs lignes avec moins de colonnes
  • SELECT DISTINCT sur plusieurs colonnes