zoukankan      html  css  js  c++  java
  • mssql sqlerver 脚本 计算数据表的结余数的方法分享

    转自:http://www.maomao365.com/?p=5710

    摘要:
    今天接到一个需求,有一张数据表,记录的是消费明细数据,
    现在需要做一个累计结余,记录每次的数据结余合计,
    下文将展示一种sql脚本的编写方式
    实验环境:sqlserver 2008 R2
    如下例所示:

    detail表 记帐流水表
    ==========
    字段:
    qt_srMoney   (money) 收入
    qt_zcMoney  (money) 支出
    qt_date         (datetime) 操作日期
    qt_dkfs         (nvarchar)  打款方式
    ------------------
    需获取一个带结余的数据信息
    ==========
    根据期初表中的日期和金额,查询出记帐表中的结余。
    帐面结余 =期初金额+收入-支出
    实验环境:sql server 2008 R2
    */ 
    create table detail(qt_srMoney   money,
    qt_zcMoney  money,
    qt_date         datetime,
    qt_dkfs         nvarchar(100))
    insert into detail values(100,0,'2018-1-2 10:00:00','other')
    insert into detail values(0,10,'2018-2-2 10:00:00','other')
    insert into detail values(0,20,'2018-3-2 10:00:00','other')
    insert into detail values(30,0,'2018-4-2 10:00:00','other')
    insert into detail values(10,60,'2018-5-2 10:00:00','other')
    go
    
    declare @datestart datetime ---开始计算日期
    set @datestart ='2018-2-1'
    declare @qcomney money --期初
    set @qcomney =100 
     
    select t1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney,sum(t2.qt_srMoney-t2.qt_zcMoney)+@qcomney
    from detail t1,detail t2 
    where t1.qt_date>=t2.qt_date 
    and t1.qt_date >=@datestart
    group by t1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney
    order by t1.qt_date;
    go
    
    ---避免日期出现两条导致结余数据计算异常-----
    declare @datestart datetime ---开始计算日期
    set @datestart ='2018-2-1'
    declare @qcomney money --期初
    set @qcomney =100
    
    with cteName  as 
    (
      select qt_srMoney,qt_zcMoney,qt_date,qt_dkfs,  
      row_number() over ( order by qt_date)  as keyID  from detail where qt_date >=@datestart
    )  select t1.keyId,t1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney,sum(t2.qt_srMoney-t2.qt_zcMoney)+@qcomney
    from cteName t1,cteName t2 
    where t1.keyId>=t2.keyId  
    group by t1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney,t1.keyId
    order by t1.keyId;
     
    go
    truncate table detail
    drop table detail
  • 相关阅读:
    Java实现 蓝桥杯 历届试题 翻硬币
    后台管理UI推荐
    js跳转页面方法(转)
    Request常用方法 (总结)
    Eclipse项目 迁移到 Intellj IDEA
    由后端来类比前端设计的思考(转)
    数据库字段命名及设计规范(转)
    如何改变Myeclipse编辑区背景色(转)
    Myeclipse和windows调节成护眼色
    qt截获html请求(继承QNetworkAccessManager和QNetworkReply)
  • 原文地址:https://www.cnblogs.com/lairui1232000/p/8964949.html
Copyright © 2011-2022 走看看