Bonjour à tous!
Soit le code SQL suivant :
Mon problème:
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
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 .
Partager