Bonjour à tous,
Voilà, je débute sur le langage sql et je suis confronté à un petit problème.
J'ai une table comme celle ci (10 champs) :
BUEXE;ICBUD;PKPR;TCTR;BCBA;LESC;RUD;BUDPD;BUFPD;BUMRD
2010;1;9;;;;STRU;2010-01-01;2010-12-31;;7761,24
2010;1;9;;;;RECT;2010-01-01;2010-12-31;;9028,06
2011;1;9001;;;;EGC6;2010-01-01;2010-12-31;;970,87
2011;1;9001;;;;EGEC;2010-01-01;2010-12-31;;1682,31
J'ai la requete suivante :
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| SELECT DISTINCT
KBUDPRD.BUEXE AS EXERCICE,
KBUDPRD.PKPR AS PROGRAMME,
KBUDPRD.TCTR AS TRANCHE,
KBUDPRD.BCBA AS ENSEMBLE,
KBUDPRD.LESC AS ESCALIER,
KBUDPRD.ICBUD AS BUDGET,
KBUDPRD.RUD AS RUBRIQUE,
'01/01/2012' AS DEBUT_PERIODE_DEPENSE,
'31/12/2012' AS FIN_PERIODE_DEPENSE,
SUM (KBUDPRD.BUMRD) OVER (PARTITION BY KBUDPRD.BUEXE,KBUDPRD.PKPR,KBUDPRD.TCTR, KBUDPRD.BCBA,KBUDPRD.LESC, KBUDPRD.ICBUD, KBUDPRD.RUD) AS
MONTANT_DEPENSE_REEL
FROM LOGI.KBUDPRD KBUDPRD
WHERE (KBUDPRD.BUDPD>={ts '2012-01-01 00:00:00'} AND KBUDPRD.BUFPD>={ts '2012-01-01 00:00:00'}) |
qui permet de faire la somme par KBUDPRD.BUMRD de dépenses sur des périodes données (BUDPD et BUFPD) et d'agréger sur les champs indiqués
dans PARTITION BY.
Cette requete fonctionne mais je voudrais avoir une colonne supplémentaire à l'issue de celle-ci qui me ramène pour chaque ligne les données de l'année N-1 et dont la requete est quasiment la meme (à une petite chose prêt) :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| SELECT DISTINCT
KBUDPRD.BUEXE AS EXERCICE,
KBUDPRD.PKPR AS PROGRAMME,
KBUDPRD.TCTR AS TRANCHE,
KBUDPRD.BCBA AS ENSEMBLE,
KBUDPRD.LESC AS ESCALIER,
KBUDPRD.ICBUD AS BUDGET,
KBUDPRD.RUD AS RUBRIQUE,
'01/01/2011' AS DEBUT_PERIODE_DEPENSE,
'31/12/2011' AS FIN_PERIODE_DEPENSE,
SUM (KBUDPRD.BUMRD) OVER (PARTITION BY KBUDPRD.BUEXE,KBUDPRD.PKPR,KBUDPRD.TCTR, KBUDPRD.BCBA,KBUDPRD.LESC, KBUDPRD.ICBUD, KBUDPRD.RUD) AS
MONTANT_DEPENSE_REEL_ANNEE_N_MOINS_UN
FROM LOGI.KBUDPRD KBUDPRD
WHERE (KBUDPRD.BUDPD>={ts '2011-01-01 00:00:00'} AND KBUDPRD.BUFPD<={ts '2011-12-31 00:00:00'})
AND KBUDPRD.EXE = '2011' |
je ne sais pas agréger ces 2 requêtes en une seule et je voudrais savoir si cela est possible sans passer par des tables temporaires.
Merci d'avance de vos avis.
Bonne journée
Partager