2016-07-23 3 views
0

Je suis à la recherche d'une requête qui peut agréger les données sur une base arrière 21 jours de la manière suivante: ma table contient les colonnes suivantes: accountid, date, mesureagrégation de fenêtre coulissante SQL (sans utiliser la fonction de fenêtre)

J'ai besoin, pour chaque compte, d'une date pour additionner (mesurer) pour les 21 jours précédents. Une idée de comment le faire en SQL pur sans fenêtre/fonction analytique? (J'écris du code SQL dans un produit BI qui n'a pas de support dans les fonctions analytiques)

+0

Pouvez-vous fournir des exemples de données et les résultats souhaités? 21 jours de retour de quoi? –

Répondre

1

Une méthode plutôt inefficace utilise des sous-requêtes corrélées. Si vous voulez pour chaque entrée les 21 jours précédents, puis:

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; 

Non que les fonctions de date diffèrent par la base de données, de sorte que votre base de données particulière pourrait avoir une autre méthode de soustraction 21 jours.