sql >> Database teknologi >  >> RDS >> PostgreSQL

Hvordan genererer man en virtuel tabel for at generere en sekvens af datoer i PostgreSQL?

Liste over datoer

Brug generate_series-funktionen for at få en liste over numre, som du kan tilføje til en dato for at få en liste over datoer:

VÆLG CURRENT_DATE + s.a AS-datoer FROM gener_series(0,14,7) som s(a); 

Resultat:

datoer------------2004-02-052004-02-122004-02-19 

Pivotering

Den sidste del af dit spørgsmål omhandler pivotering af resultatsættet - konvertering af rækkedata til søjledata. PIVOT og UNPIVOT er ANSI, men jeg ser dem ikke som understøttet af PostgreSQL i øjeblikket . Den mest konsekvent understøttede måde at pivotere en forespørgsel på er at bruge aggregerede funktioner:

VÆLG t.konto, 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.beløb) AS Saldo FRA (SELECT CURRENT_DATE + s.a AS-datoer FRA gener_series(0,14,7) som s(a)) xLEFT JOIN-TRANSAKTIONER y PÅ y.dato =x.dato GRUPPER EFTER t.konto

Dynamiske kolonner

... betyder dynamisk SQL .




  1. Skift baggrundsfarve for HTML <area> tag

  2. Jeg har brug for usædvanlige bestilling af mysql-resultater

  3. Hvorfor kommando \dt giver - ingen relationer fundet?

  4. MySQL Query - seneste poster pr. gruppe