sql >> Databáze >  >> RDS >> PostgreSQL

Jak vygenerovat virtuální tabulku pro generování sekvence dat v PostgreSQL?

Seznam dat

Použijte funkci generate_series pro získání seznamu čísel, která můžete přidat k datu, abyste získali seznam dat:

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

Výsledek:

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

Otáčení

Druhá část vaší otázky se zabývá otáčením sady výsledků – převodem řádkových dat na sloupcová data. PIVOT a UNPIVOT jsou ANSI, ale nevidím je jako podporované PostgreSQL aktuálně . Nejdůsledněji podporovaným prostředkem pivotování dotazu je použití agregačních funkcí:

   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

Dynamické sloupce

...znamená dynamické SQL .




  1. Je možné vložit databázový server MySQL do servletu Java?

  2. Použití count(*) vs num_rows

  3. Jak vytvořit vypočítané pole v Accessu

  4. ORACLE SQL LISTAGG nevrací očekávaný výsledek