Ik denk dat het toevoegen van de volgende case-expressie aan uw select-statement het zou moeten doen:
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
Dit heeft echter veel herhalende code (de Owed-berekening), dus ik zou de oorspronkelijke query in een algemene tabelexpressie inpakken en het als volgt doen:
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
Dit keert terug naar berekende TotalDeductions als het aftrekken van de Owed een resultaat over de FromMinimumReturn laat, anders zal het 0 opleveren voor TotalDeductions.