SQL 通过sum() over(order by ,rownum)实现财务现金日记账实例

SELECT
    类型,to_char(发生日期,'yyyy-MM-dd') 发生日期,期初余额,借方金额,贷方金额,
    (CASE WHEN 借方金额>0 THEN '借' 
          WHEN 贷方金额>0 THEN '贷' ELSE '平' END) 方向,
    sum(收支金额) over(order by 发生日期, rownum) 余额
FROM(    
    SELECT
        LX 类型,账户,账号,摘要,发生日期,单据ID,
        (case when LX='期初' then 期初余额 else 0 end) 期初余额,
        (case when LX='收入' then 期初余额 else 0 end) 借方金额,
        (case when LX='支出' then 期初余额 else 0 end) 贷方金额,
        (CASE WHEN LX='收入' then 期初余额
              WHEN LX='支出' then -期初余额
              WHEN LX='期初' then 期初余额 ELSE 0 END) 收支金额 
    FROM(
        SELECT 
            '期初' LX,F.ZHANGHUMINGCHENG 账户,F.KAIHUZHANGHAO 账号,'期初' 摘要,
            (CASE WHEN F.JIANZHANGRIQI>ADD_MONTHS(SYSDATE,-6) THEN F.QICHUYUE ELSE F.TOTAL-NVL(F1.收入金额,0)+NVL(F2.支出金额,0) END) 期初

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值