2016-07-23 22 views
0

Ich suche nach einer Abfrage, die Daten auf ein 21 Tagen zurück Basis in folgenden Weise zusammenfassen kann: meine Tabelle mit den folgenden Spalten: accountid, Datum, messenSQL Schiebefenster Aggregation (ohne Fenster-Funktion)

Ich brauche, für jedes Konto, Datum zu summieren (messen) für die letzten 21 Tage zurück. Irgendeine Idee, wie man es in reinem SQL ohne Fenster/analytische Funktion tut? (Ich schreibe SQL innerhalb eines BI-Produkts, das keine Unterstützung für analytische Funktionen bietet)

+0

Können Sie Beispieldaten und gewünschte Ergebnisse bereitstellen? 21 Tage zurück von was? –

Antwort

1

Eine ziemlich ineffiziente Methode verwendet korrelierte Unterabfragen. Wenn Sie die vorherigen 21 Tage für jeden Eintrag wollen, dann:

select t.*, 
     (select sum(t2.measure) 
     from t t2 
     where t2.accountid = t.accountid and 
       t2.date > t.date - interval '21' day 
     ) as sum21 
from t; 

Nicht, dass Datumsfunktionen von Datenbank unterscheiden, so dass Ihre bestimmte Datenbank könnte eine andere Methode der Subtraktion 21 Tage haben.