sql >> Database teknologi >  >> RDS >> Sqlserver

Udførelse af beregninger i sql

Jeg tror, ​​at det burde gøre det, hvis du tilføjer følgende kasusudtryk til din select-sætning:

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

Dette har dog en masse gentagelseskode (Owed-beregningen), så jeg ville pakke den oprindelige forespørgsel ind i et almindeligt tabeludtryk og gøre det sådan:

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

Dette vil vende tilbage til beregnede TotalDeductions, hvis det trækkes fra det Skyldede efterlader et resultat over FromMinimumReturn, ellers returnerer det 0 for TotalDeductions.




  1. Sådan opretter du en lagret procedure i MySQL med Knex raw

  2. Opdel IPv4-adresse i 4 numre i Oracle sql

  3. Bemærk:Konvertering af matrix til streng i

  4. MySQL terminologi begrænsninger vs udenlandske nøgler forskel?