sql DB计算移动摘要

时间:2012-12-03 14:17:04

标签: sql

我想计算移动摘要:

Total amount:100
first receipt: 20
second receipt: 10

计算列中的第一行是总金额与第一张收据之间的差额:100-20 = 80

计算列中的第二行是第一次calculated_row和第一次收据之间的差异:80-10 = 70

演示文稿应该显示receipt_amount,余额:

receipt_amount | balance
20 | 80
10 | 70

我很乐意使用你的帮助 谢谢: - )

2 个答案:

答案 0 :(得分:0)

您并没有真正向我们提供有关您的表格及其结构的信息。

我假设有一个包含total_amount的orders表和一个包含每个收据的receipt_table(作为正值):

由于您还没有指定DBMS,因此这是ANSI SQL:

select sum(amount) over (order by receipt_nr) as running_sum
from (
    select total_amount as amount 
    from orders 
    where order_no = 1
    union all
    select -1 * receipt_amount
    from the_receipt_table
    where order_no = 
) t

答案 1 :(得分:0)

首先 - 感谢您的回复。

我使用Cache DB,可以使用SQL和ORACLE语法。

基本上,数据位于两个不同的表中,但我将它们放在一个连接查询中。 几行具有不同的收据金额和每行(收据)具有相同的总金额。 敌人的例子:

Receipt_no Receipt_amount Total_amount Balance 1 20 100 80 1 10 100 70 1 30 100 40 2 20 50 30 2 10 50 20

因此,计算应该是这样的,即在第一次收据中,差值计算是从total_amount进行的,而所有其他收据(在同一个receipt_no中)都是从余额中减少的

谢谢!