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
| CREATE FUNCTION NombreJours (@Client CHAR(8),
@DateDebut Datetime,
@DateFin Datetime,
@Seuil MONEY)
RETURNS INT
AS
BEGIN
IF @Client IS NULL
RETURN NULL
DECLARE @NbJours INT
DECLARE @MaDate DATETIME
DECLARE @SoldeMouvement MONEY
SET @NbJours = 0
SET @MaDate = @DateDebut
'--initialisation comme paramètre
@SoldeMouvement =1000
'--je pense qu'il faut optimiser ici
WHILE @MaDate <= @DateFin
BEGIN
'-- j'incrémente la date
Select @MaDate = DateAdd(Day,1,@MaDate)
SELECT @SoldeMouvement =(SUM(MONTANT_EURO_SIGNE) )+@SoldeMouvement
FROM MOUVEMENT MVT, ECRITURE ECR
WHERE ECR.ID = MVT.ID
AND ECR.DATE_COMPTA<= @MaDate
AND MVT.COMPTE=@Client
GROUP BY MONTANT_EURO_SIGNE
IF @SoldeMouvement >= @Seuil
SET @NbJours = @Nbjours + 1
END
RETURN @NbJours
END |
Partager