मुझे लगता है कि निम्नलिखित केस एक्सप्रेशन को आपके चयन कथन में जोड़ना चाहिए:
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
हालांकि, इसमें बहुत सारे दोहराए जाने वाले कोड (बकाया गणना) हैं, इसलिए मैं मूल क्वेरी को एक सामान्य तालिका अभिव्यक्ति में लपेटूंगा और इसे इस तरह से करूंगा:
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
यह परिकलित TotalDeductions पर वापस आ जाएगा यदि इसे बकाया से घटाना FromMinimumReturn पर परिणाम देता है अन्यथा यह TotalDeductions के लिए 0 लौटाएगा।