SQL PROCEDURALE avec CURSEUR
Bonsoir,
Voila j'aurais voulu afficher uniquement le CA mini et maxi d'un représentant par ville et donc au résultat avoir une ligne par VILLE uniquement regroupant le CA mini et maxi de celui-ci.
Sachant que j'ai 5 villes différentes au total et que chaque ville peut avoir plusieurs représentant comme la requête ci-dessous vous le montre :
Code:
1 2 3 4
| SELECT R.NREP,VILLE, sum(montant)
FROM BUREAU B, COMMANDE CMD, REPRESENTANT R
WHERE B.NBUR = R.NBUR and R.NREP = CMD.NREP
GROUP BY VILLE, R.NREP |
NREP VILLE
106 NEW YORK 32958.00
109 NEW YORK 33130.00
101 CHICAGO 3978.00
103 CHICAGO 37795.00
104 CHICAGO 67500.00
105 ATLANTA 35582.00
102 LOS ANGELES 29276.00
108 LOS ANGELES 51533.00
107 DENVER 3082.00
En ce moment je bloque sur ce code :
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 51 52 53 54 55 56 57 58
| DECLARE @CA_mini dec(9,2)
DECLARE @CA_maxi dec(9,2)
DECLARE @VILLE varchar(25)
DECLARE @montant dec(9,2)
DECLARE @VILLE2 varchar(25)
SET @CA_mini = 50000
SET @CA_maxi = 0
DECLARE exo2 CURSOR FOR
SELECT VILLE
FROM BUREAU B
OPEN exo2
FETCH FROM exo2 INTO @VILLE2
BEGIN
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN
DECLARE exo CURSOR FOR
SELECT VILLE, sum(montant)
FROM BUREAU B, COMMANDE CMD, REPRESENTANT R
WHERE B.NBUR = R.NBUR and R.NREP = CMD.NREP and ville = @ville2
GROUP BY VILLE, R.NREP
OPEN exo
FETCH FROM exo INTO @VILLE, @montant
BEGIN
WHILE @@FETCH_STATUS = 0
BEGIN
BEGIN
IF @MONTANT > @CA_maxi
SET @CA_maxi = @MONTANT
IF @MONTANT < @CA_mini
SET @CA_mini = @MONTANT
END
FETCH FROM exo INTO @VILLE, @montant
END
END
CLOSE exo
DEALLOCATE exo
END
PRINT 'La ville de ' + @ville2 + ' qui a un CA mini de '+convert(char(9),@CA_mini)+'et un CA maxi de '+convert(char(9),@CA_maxi)
FETCH FROM exo2 INTO @VILLE2
END
END
CLOSE exo2
DEALLOCATE exo2 |
Celui-ci fait bien une partie de ceux que je veux mais le problème qui me coince est la réinitialisation de CA_mini et CA_maxi chaque fois que la ville change.
Pouvez-vous me proposer une aide pour me débloquer s'il vous plaît et si possible l'explication qui va avec toujours dans le cadre de ma formation et savoir ce que je fais.
Merci a vous