Bonjour,

J'ai une requête sur oracle qui me semble prendre énormément de temp pour donner un résultat ! j'aimerais trouver une solution pour l'optimiser :
Comment je peux faire SVP ?!

ci joint ma requête :
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
21
22
23
24
25
26
with req as (
select  num_compte ,montant,
(select  sum(0-montant) from d_mouvement_par d where NATURE=3 and cod_evenement='IMM' and d.dte_operation between ret.dte_operation   and ret.dte_operation+31 and d.num_compte=ret.num_compte) as montant_retrait  
from suivi_ret ret)
 
select 
 
case 
when MONTANT >= 3000  and  montant_retrait  between 2000 and 3000 then 'cas1'
when MONTANT >= 5000  and  montant_retrait  between 3000 and 4000 then 'cas2'
when MONTANT >= 8000  and  montant_retrait  between 4000 and 4000 then 'cas3'
when MONTANT >= 10000 and  montant_retrait  between 4000 and 5000 then 'cas4'
when MONTANT >= 10000 and  montant_retrait  between 5000 and 6000 then 'cas5'
when MONTANT >= 10000 and  montant_retrait  between 2000 and 3000 then 'cas6'
 end as cas
,count(*)  as nobmre_virement
 from req
group by 
  case 
when MONTANT >= 3000  and  montant_retrait  between 2000 and 3000 then 'cas1'
when MONTANT >= 5000  and  montant_retrait  between 3000 and 4000 then 'cas2'
when MONTANT >= 8000  and  montant_retrait  between 4000 and 4000 then 'cas3'
when MONTANT >= 10000 and  montant_retrait  between 4000 and 5000 then 'cas4'
when MONTANT >= 10000 and  montant_retrait  between 5000 and 6000 then 'cas5'
when MONTANT >= 10000 and  montant_retrait  between 2000 and 3000 then 'cas6'
 end;
merci pour votre aide