Je pense que l'ajout de l'expression case suivante à votre instruction select devrait suffire :
CASE WHEN
SUM(LandingDetails.Quantity * LandingDetails.UnitPrice)
-
SUM(LandingDetails.Quantity * LandingDetails.UnitPrice) * DeductionRate + WeeklyDeductionRate
> FromMinimumReturn
THEN SUM(LandingDetails.Quantity * LandingDetails.UnitPrice) * DeductionRate + WeeklyDeductionRate
ELSE 0 END
AS TotalDeductions
Cependant, cela a beaucoup de code répétitif (le calcul Owed), donc j'envelopperais la requête d'origine dans une expression de table commune et le ferais comme ceci :
WITH cte AS (
<<<your original query here>>> -- I left it out to save space...
)
SELECT
ContactId,
Owed,
WeeklyDeductionRate,
FromMinimumReturn,
DeductionRate,
CASE
WHEN Owed - (Owed * DeductionRate + WeeklyDeductionRate) > FromMinimumReturn
THEN Owed * DeductionRate + WeeklyDeductionRate
ELSE 0 END
AS TotalDeductions
FROM cte
Cela reviendra au TotalDeductions calculé si le soustraire de l'Owed laisse un résultat supérieur au FromMinimumReturn, sinon il renverra 0 pour TotalDeductions.