博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mssql sqlerver 脚本 计算数据表的结余数的方法分享
阅读量:5324 次
发布时间:2019-06-14

本文共 1764 字,大约阅读时间需要 5 分钟。

转自:

摘要:

今天接到一个需求,有一张数据表,记录的是消费明细数据,
现在需要做一个累计结余,记录每次的数据结余合计,
下文将展示一种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')godeclare @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)+@qcomneyfrom detail t1,detail t2 where t1.qt_date>=t2.qt_date and t1.qt_date >=@datestartgroup by t1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoneyorder by t1.qt_date;go---避免日期出现两条导致结余数据计算异常-----declare @datestart datetime ---开始计算日期set @datestart ='2018-2-1'declare @qcomney money --期初set @qcomney =100with 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)+@qcomneyfrom cteName t1,cteName t2 where t1.keyId>=t2.keyId  group by t1.qt_date,t1.qt_dkfs,t1.qt_srMoney,t1.qt_zcMoney,t1.keyIdorder by t1.keyId; gotruncate table detaildrop table detail

 

转载于:https://www.cnblogs.com/lairui1232000/p/8964949.html

你可能感兴趣的文章
MATLAB作图方法与技巧(一)
查看>>
上海淮海中路上苹果旗舰店门口欲砸一台IMAC电脑维权
查看>>
Google透露Android Market恶意程序扫描服务
查看>>
给mysql数据库字段值拼接前缀或后缀。 concat()函数
查看>>
迷宫问题
查看>>
【FZSZ2017暑假提高组Day9】猜数游戏(number)
查看>>
泛型子类_属性类型_重写方法类型
查看>>
eclipse-将同一个文件分屏显示
查看>>
mysql5.x升级至mysql5.7后导入之前数据库date出错的解决方法!
查看>>
对闭包的理解
查看>>
java.lang.OutOfMemoryError异常解决方法
查看>>
[Javascript] Flattening nested arrays: a little exercise in functional refactoring
查看>>
练习10-1 使用递归函数计算1到n之和(10 分
查看>>
Oracle MySQL yaSSL 不明细节缓冲区溢出漏洞2
查看>>
windows编程ASCII问题
查看>>
.net webService代理类
查看>>
Code Snippet
查看>>
Node.js Express项目搭建
查看>>
zoj 1232 Adventure of Super Mario
查看>>
Oracle 序列的应用
查看>>