sqlerver 字符串转整型_mssql sqlerver 脚本 计算数据表的结余数的方法分享
摘要:
今天接到一個需求,有一張數據表,記錄的是消費明細數據,
現在需要做一個累計結余,記錄每次的數據結余合計,
下文將展示一種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
mssql_sqlserver_結余數據的計算方法
總結
以上是生活随笔為你收集整理的sqlerver 字符串转整型_mssql sqlerver 脚本 计算数据表的结余数的方法分享的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cef使用缓存_CEF 文件下载功能实现
- 下一篇: textureview 缩放_用Medi