PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Jak wygenerować wirtualną tabelę, aby wygenerować sekwencję dat w PostgreSQL?

Lista dat

Użyj funkcji generowania_series aby uzyskać listę liczb, które możesz dodać do daty, aby uzyskać listę dat:

SELECT CURRENT_DATE + s.a AS dates 
  FROM generate_series(0,14,7) as s(a);

Wynik:

dates
------------
2004-02-05
2004-02-12
2004-02-19

Obracanie

Druga część twojego pytania dotyczy przestawiania zestawu wyników – konwersji danych wierszowych na dane kolumnowe. PIVOT i UNPIVOT to ANSI, ale nie widzę ich jako obsługiwane przez PostgreSQL obecnie . Najbardziej konsekwentnie obsługiwanym sposobem przestawiania zapytania jest użycie funkcji agregujących:

   SELECT t.account,
          SUM(CASE WHEN t.date = '2010-01-01' THEN t.amount END) AS '2010-01-01',
          SUM(CASE WHEN t.date = '2010-01-02' THEN t.amount END) AS '2010-01-02',
          SUM(CASE WHEN t.date = '2010-01-03' THEN t.amount END) AS '2010-01-03',
          SUM(t.amount) AS Balance
     FROM (SELECT CURRENT_DATE + s.a AS dates 
             FROM generate_series(0,14,7) as s(a)) x
LEFT JOIN TRANSACTIONS y ON y.date = x.date
 GROUP BY t.account

Kolumny dynamiczne

...oznacza dynamiczny SQL .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy klucz obcy postgres oznacza indeks?

  2. Otrzymany obiekt typu org.postgresql.util.PGobject

  3. Buforowanie w PostgreSQL

  4. Rzutuj ciąg na liczbę, interpretując null lub pusty ciąg jako 0

  5. Błąd łączenia z bazą danych heroku postgres w nodejs