sql >> Database >  >> RDS >> Sqlserver

Berekeningen uitvoeren in sql

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.




  1. Hoe SQL Server Management Studio (SSMS) te verwijderen - SQL Server/TSQL-zelfstudie, deel 23.1

  2. Verander de Oracle-poort van poort 8080

  3. Wat doet een databaseontwerper?

  4. Door komma's gescheiden lijst van alle kolommen in de database (tabelnaam | kolomnamen...)