sql >> Base de Datos >  >> RDS >> PostgreSQL

Postgres:convertir una sola fila en varias filas (despivotar)

Un solo SELECT con un LATERAL unirse a un VALUES expresión hace el trabajo:

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:

  • Convierta una fila en varias filas con menos columnas
  • SELECCIONE DISTINTO en varias columnas