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

SQL Server Alokace částky ve vyúčtování

WITH  cl AS
(select o.LINEID, o.BILL, o.[Total Amount], 
(select SUM([Total Amount]) from bills t where o.BILL = t.BILL and o.LINEID >= t.LINEID) as 'sum_total_ammount'
from bills o inner join payment p on o.BILL = p.BILL)

select o.LINEID, o.BILL, o.[Total Amount], 
case when p.[Paid Amount] >= sum_total_ammount then o.[Total Amount] 
else (o.[Total Amount] - sum_total_ammount + p.[Paid Amount]) end as 'Allocated Amount'
from cl o inner join payment p on o.BILL = p.BILL
and (o.[Total Amount] - sum_total_ammount + p.[Paid Amount]) > 0

Zde je ukázka na SqlFiddle .




  1. Vytvoření dočasné tabulky uvnitř uložené procedury

  2. mySQL hierarchické řazení seskupení

  3. Zkontrolujte, zda existují záznamy v tabulce Postgres

  4. Jak vybrat data za posledních 30 dní v MySQL?