sql >> Databasteknik >  >> RDS >> Sqlserver

Utföra beräkningar i sql

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.




  1. java.sql.SQLEundantag:ORA-01461:kan binda ett LONG-värde endast för att infogas i en LONG-kolumn

  2. Codeigniter Join med flera villkor

  3. Hämta datum även om det inte finns i tabellen från SQL SELECT-satsen

  4. Max för summafråga