sql >> Databáze >  >> RDS >> Sqlserver

Provádění výpočtů v sql

Myslím, že přidání následujícího případu do vašeho příkazu select by to mělo stačit:

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

Má to však hodně opakujícího se kódu (výpočet Owed), takže bych původní dotaz zabalil do běžného tabulkového výrazu a udělal bych to takto:

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

To se vrátí k vypočteným celkovým srážkám, pokud to odečtete od dlužné částky zanechá výsledek nad FromMinimumReturn, jinak se vrátí 0 pro celkové srážky.




  1. Přístup k databázi XAMPP MySql z jiného počítače

  2. Vyhledávání uvnitř serializace dat pomocí MYSQL

  3. PHP ORA-01745:neplatný název proměnné hostitele/vazby Varování

  4. Poloměr 40 kilometrů pomocí zeměpisné šířky a délky