Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

एसक्यूएल में गणना करना

मुझे लगता है कि निम्नलिखित केस एक्सप्रेशन को आपके चयन कथन में जोड़ना चाहिए:

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 लौटाएगा।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. RAISERROR में संदेश को संयोजित करें

  2. विजुअल स्टूडियो के माध्यम से बनाए गए मेरे डेटाबेस तक पहुंच प्राप्त नहीं कर सकता?

  3. SQL सर्वर:अद्यतन MyTable SET col1 =मान, col2 =col1

  4. SQL सर्वर ट्रिगर:DML ट्रिगर

  5. क्या आप डेटाबेस में साझा तालिका प्रकार की अनुमति देने के लिए एक सीएलआर यूडीटी बना सकते हैं?