一个表中的SQL聚合函数

时间:2017-01-20 18:26:03

标签: sql sql-server aggregate

所以我有一个包含4个字段的表=第1个是日期,第2个是第一个余额,第3个是突变,第4个是结束余额。

下面的图片有2个表,第一个表是原始表,我必须进行查询,以便它可以像第二个表一样显示。

* SALDO AWAL 正在获取 SALDO PENUTUPAN 昨天数据

* SALDO PENUTUPAN SALDO AWAL + MUTASI 获取数据

依此类推,直到数据看起来像第二个表

enter image description here

UPDATE TRANSAKSI SET SALDO_AWAL = (SELECT t2.SALDO_PENUTUPAN
               FROM TRANSAKSI t2 
               WHERE t2.TANGGAL = '2015-10-10')where TANGGAL > '2015-10-10'

ABOVE是我的示例代码,但我认为它运行不正常,所以我需要你帮忙,谢谢你

1 个答案:

答案 0 :(得分:1)

鉴于tanggal是唯一的,您可以使用:

with cte(tanggal, saldo_awal, mutasi, saldo_penutupan) as (
    select
        tanggal,
        lag(saldo_penutupan, 1, 0) over (order by tanggal) saldo_awal,
        mutasi,
        saldo_penutupan
    from (
        select
            tanggal,
            mutasi,
            sum(mutasi) over (order by tanggal) saldo_penutupan
        from TRANSAKSI
    ) t
)
update t1
set t1.saldo_awal       = t2.saldo_awal,
    t1.saldo_penutupan  = t2.saldo_penutupan
from TRANSAKSI t1 join cte t2
on t1.tanggal = t2.tanggal