Bonjour à tous,

J'ai un souci sur une requête analytique :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
select distinct client
, id_aaaamm
, sum(ca) over (partition by client,id_aaaamm) CA_M
, sum(ca) over (partition by client order by id_aaaamm range between 100 preceding and 100 preceding) CA_M1
from table_vente v
order by client, id_aaaamm
Voici une extraction du résultat sur un client :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
CLIENT       ID_AAAAMM       CA_M	     CA_M1
Client1       200601	        4,39	
Client1       200603	        49,53	
Client1       200605	        33,03	
Client1       200608	        97,41	
Client1       200701	        -30,94       4,39
Client1       200705	        91,81	     33,03
Je calcule la somme du CA pour le mois de la ligne, et le CA pour le même mois mais de l'année précédente.

Ce que j'aimerais faire, c'est d'ajouter à ce résultat les lignes qui n'ont pas de CA sur le mois de la ligne, mais qui en a pour le mois de l'année précédente. Ce qui donnerait ceci :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
CLIENT       ID_AAAAMM       CA_M	     CA_M1
Client1       200601	        4,39	
Client1       200603	        49,53	
Client1       200605	        33,03	
Client1       200608	        97,41	
Client1       200701	        -30,94       4,39
Client1       200703	                     49,53
Client1       200705	        91,81	     33,03
Client1       200608	                     97,41
Je ne vois pas comment faire ca avec les fonctions analytiques.
J'ai de plus essayé de faire un outer join avec une table de mois (quitte à afficher tous les mois, même ceux qui ont "null" sur les 2 colonnes CA, même si ca ne m'arrange pas en terme de volumétrie), mais ca ne marche pas.

Pour info, je suis sous oracle 10g.

Merci d'avance pour toute idée !

Adrien