Jag tror att det borde göra det om du lägger till följande kasusuttryck i din select-sats:
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
Detta har dock en hel del upprepad kod (Owed-beräkningen), så jag skulle slå in den ursprungliga frågan i ett vanligt tabelluttryck och göra så här:
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
Detta kommer att återgå till beräknade TotalAvdrag om subtrahering av det från skulden lämnar ett resultat över FromMinimumReturn annars returnerar det 0 för TotalDeductions.