Incrémenter une variable dans un code contenant les curseur
Bonjour à tous!
Soit le code SQL suivant :
Code:
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 .