Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Effectuer des calculs en sql

Je pense que l'ajout de l'expression case suivante à votre instruction select devrait suffire :

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

Cependant, cela a beaucoup de code répétitif (le calcul Owed), donc j'envelopperais la requête d'origine dans une expression de table commune et le ferais comme ceci :

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

Cela reviendra au TotalDeductions calculé si le soustraire de l'Owed laisse un résultat supérieur au FromMinimumReturn, sinon il renverra 0 pour TotalDeductions.