Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

SQL Server Разпределение на сумата в сметката

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

Ето демонстрация на SqlFiddle .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ColdFusion 10/Windowns 7 Pro 64bit Неуспешна проверка на връзката за източник на данни

  2. Какво означава ПОРЪЧАЙТЕ (ИЗБЕРЕТЕ NULL)?

  3. Променете типа на колона с числа от varchar на int

  4. Извежда списък, разделен със запетая, в T-SQL

  5. Как да получа броя на редовете от EXEC() в TSQL SPROC?