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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :
Je souhaiterais en fait obtenir les lignes manquantes en fonction du paramètre de date.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 Mois sum(nb) --------- ---------- 10/2003 3 12/2003 7
Merci .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager