Bonjour à tous!

Soit le code SQL suivant :

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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
 
DECLARE @table_Decais TABLE
(
COD_CLIENT VARCHAR(8),
NUM_DOSSIER VARCHAR(22),
MONTANT_DECAIS MONEY,
DATE_DECAIS DATETIME, 
CYCLE INT
)
 
DECLARE @CYCLE INT
SET @CYCLE=0 
 
DECLARE Cur_Cod_Client CURSOR FOR SELECT DISTINCT SUBSTRING(NUM_CPTE_RECEPT,7,8) AS COD_CLIENT  FROM DECAIS WHERE DATE_DECAIS BETWEEN '20220101' AND '20221130'
 
DECLARE @Cod_Client varchar (8)
 
OPEN Cur_Cod_Client
FETCH Cur_Cod_Client INTO @Cod_Client
WHILE @@FETCH_STATUS = 0
 
BEGIN 
 
 
INSERT @table_Decais
 
SELECT @Cod_Client,
		NUM_DOSSIER,
		MONTANT_DECAIS,
		DATE_DECAIS,
		@CYCLE+1
 
 
 
FROM DECAIS 
WHERE DATE_DECAIS BETWEEN '20220101' AND '20220228' AND @Cod_Client=SUBSTRING(NUM_CPTE_RECEPT,7,8)
 
 
 
--set @CYCLE=@CYCLE+1  ? ceci est une interrogation où placer cette égalité d'incrémentation
 
FETCH Cur_Cod_Client INTO @Cod_Client
 
 
END 
 
CLOSE Cur_Cod_Client
DEALLOCATE Cur_Cod_Client
 
SELECT * FROM @table_Decais ORDER BY COD_CLIENT
Mon problème:
Soit deux valeurs distinctes du curseur ( correspondant à deux codes clients distincts ) 'S0100012' et 'S0100059' retournées par la requête:
Si la requête a retourné 04 enregistrements pour le code 'S0100012' alors la colonne CYCLE de la table @table_Decais devra contenir à travers la variable @CYCLE, 1 ensuite 2, ensuite 3 ensuite 4 ( une incrémentation de 1 à chaque enregistrement) .
Ensuite la variable @CYCLE devra être réinitialisé à zéro pour attendre le prochain enregistrement.
Sur le prochain code client 'S0100059' la colonne CYCLE devra contenir à travers la variable @CYCLE, les valeurs 1 ensuite 2 ( pour 02 enregistrements de ce code client ) et ainsi de suite ...

J'espère que j'ai été assez claire dans la description de mon problème ! je reste à disposition pour tout complément d'informations.

Merci d'avance pour votre aide .