sql >> Databasteknik >  >> RDS >> PostgreSQL

Postgres:konvertera en rad till flera rader (unpivot)

En enda SELECT med en LATERAL gå med i en VALUES expression gör jobbet:

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

Relaterat:

  • Konvertera en rad till flera rader med färre kolumner
  • VÄLJ DISTINKT på flera kolumner


  1. SQL:Välj endast kolumner med NULL-värden

  2. Vad är ett en-till-många-förhållande i en databas? En förklaring med exempel

  3. Vad är SQL Server RAISERROR?

  4. Hur man skapar flera en till en