sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur genererar man en virtuell tabell för att generera en sekvens av datum i PostgreSQL?

Lista över datum

Använd generate_series-funktionen för att få en lista med nummer som du kan lägga till ett datum för att få en lista med datum:

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

Resultat:

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

Vridbar

Den senare delen av din fråga handlar om att svänga resultatuppsättningen -- konvertera raddata till kolumnära data. PIVOT och UNPIVOT är ANSI, men jag ser dem inte som stödda av PostgreSQL för närvarande . Det mest konsekventa sättet att pivotera en fråga är att använda aggregerade funktioner:

   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

Dynamiska kolumner

... betyder dynamisk SQL .




  1. jenkins misslyckas när jag startar om min sql sudo:ingen tty närvarande och inget askpass-program specificerat. Tyvärr, försök igen.

  2. Infogar Postgres json-kolumn med hjälp av wildfly

  3. SQLite exempeldatabas

  4. Kontrollera Oracle RAC Network och IP-information