Bonjour à tous,

je reviens vers vous avec mes casses-tête,

j'ai besoin de vos HELP :

j'ai une table sous forme :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
 
 
___montant_trans____cumul_montant__sequence
 |    24213,43    |    -4412,49    |    17
 |    4412,49     |    0           |    18
 |    -33948,97   |    -33948,97   |    19
 |    871,19      |    -33077,78   |    20
 |    -34829,44   |    -67907,22   |    21
 |    33077,78    |    -21584,27   |    22
 |    13245,17    |    -21584,27   |    22
ici, la manipulation commence à partir de la ligne ou j'ai obtenu 0 dans cumul_montant , ici c'est sequence =18.
donc NOMBRE_INITIAL = 18
pour montant_trans j'ai des valeurs positives et d'autres négatives, la manipulation se fait sur celles positives par rapport aux négatives de la manière suivante:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
select * from this_table
where sequence > 18
and montant_trans >0 
...
je doit sommer les montant_trans positives jusqu’à atteindre la première valeur négative après 18, c.à.d :
je somme 871,19 + 33077,78 = valeur absolue(-34829,44 )
une fois atteindre la 1ere valeur négative après 18
je réinitialise NOMBRE_INITIAL il devient dans ce cas 21

même traitement pour ce nombre, mais dans ce cas on prend pas en considération les nombres déjà utilisés dans la sommes précédente (ici c'est 33077,78 ).

donc
13245,17+ rien <> valeur absolue(-34829,44) on fait rien...
on retourne ici 21 et on quitte.

j'espère que j'étais clair avec vous

qu'est ce que dois-je utiliser? un curseur?
je comptes sur vos habituelles collaborations.