Problème de Group By sur des dates (SQL2 - Oracle 8.1.7)
Bonjour,
Je souhaiterais avoir votre avis sur une requête 'select'. Je dispose d'une table contenant un champ Date. Je souhaite faire un group by par mois pour utiliser une fonction de groupe sur un champ numérique. La requête n'est pas compliqué à écrire. Le problème vient du fait que pour certains mois aucune valeur n'est présente et donc le group by passe outre. Exemple si aucune date du mois d'août se trouve dans la table alors je n'aurais pas de résultat nul ou 0 pour ce mois (ce qui est logique).
Mon problème vient du fait que je ne dois utiliser que du SQL, pas de table intermédiaire et donc pas de procédure.
Ci-dessous un exemple simple :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
create table PHC
(
Jour Date,
nb Integer
);
define debut = '06/08/2003'
insert into PHC values (to_date('10/10/2003','DD/MM/YYYY'),1);
insert into PHC values (to_date('11/10/2003','DD/MM/YYYY'),2);
insert into PHC values (to_date('10/12/2003','DD/MM/YYYY'),3);
insert into PHC values (to_date('11/12/2003','DD/MM/YYYY'),4);
select to_char(Jour,'MM/YYYY'),sum(nb)
from PHC
where Jour between to_date('&debut','DD/MM/YYYY') and add_months(to_date('&debut','DD/MM/YYYY'),12)-1
group by to_char(Jour,'MM/YYYY'); |
LE script suivant me renvoie un résultat normal :
Code:
1 2 3 4 5 6
|
Mois sum(nb)
--------- ----------
10/2003 3
12/2003 7 |
Je souhaiterais en fait obtenir les lignes manquantes en fonction du paramètre de date.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
Mois sum(nb)
--------- ----------
08/2003 0
09/2003 0
10/2003 3
11/2003 0
12/2003 7
01/2004 0
02/2004 0
03/2004 0
04/2004 0
05/2003 0
06/2003 0
07/2003 0 |
Merci .