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
mssql sqlerver 脚本 计算数据表的结余数的方法分享的更多相关文章
- mssql sqlserver 获取指定汉字的笔画数的方法分享
转自:http://www.maomao365.com/?p=6421 摘要: 下文讲述计算汉字笔画数的sql函数分享,如下所示: 例:建立汉字笔画数sql函数 )) returns int as b ...
- mssql sqlserver避免sql脚本中出现除零错误的方法分享
摘自:http://www.maomao365.com/?p=6612 摘要:下文介绍sql server中,sql脚本避免出现除零错误的方法分享 在各种业务系统开发中,通常会遇到除零的错误,下文分享 ...
- MSSQL数据库统计所有表的记录数
今天需要筛选出来库中行数不为零的表,于是动手写下了如下存储过程. CREATE PROCEDURE TableCount AS BEGIN SET NOCOUNT ON ),RowsCount INT ...
- mssql sqlserver时间戳与时间格式互相转换的方法分享
转自: http://www.maomao365.com/?p=9336 摘要: 下文讲述mssql中时间戳和时间格式的转换方法,如下所示: 实验环境:sql server 2008 R2 时间戳简介 ...
- mssql sqlserver 保留小数位指定位数的2种方法分享
摘要: 下文讲述将"sql数值型"类型数值转换为指定小数位的数据 方法1:采用 cast 方式转换数值类型至指定小数位: ,) set @a = 18.893 ,) 方法2:采用 ...
- mssql sqlserver 使用sql脚本 清空所有数据库表数据的方法分享
摘要: 下文讲述清空数据库中所有表信息的方法分享,如下所示: 实验环境:sql server 2008 实现思路: 1.禁用所有约束,外键 2.禁用所有触发器 3.删除表数据 4.开启触发器 5.开启 ...
- mssql sqlserver 使用sql脚本检测数据表中一列数据是否连续的方法分享
原文地址:http://www.maomao365.com/?p=7335 摘要: 数据表中,有一列是自动流水号,由于各种操作异常原因(或者插入失败),此列数据会变的不连续,下文将讲述使用sql ...
- 【SQL】统计所有表的行数
环境:mssql ent 2k8 r2 原理:遍历所有用户表,用sp_spaceused过程分别获取每张表的行数并写入临时表,最后返回临时表 IF OBJECT_ID('tempdb..#TableR ...
- efcore在Saas系统下多租户零脚本分表分库读写分离解决方案
efcore在Saas系统下多租户零脚本分表分库读写分离解决方案 ## 介绍 本文ShardinfCore版本x.6.0.20+ 本期主角: - [`ShardingCore`](https://gi ...
随机推荐
- nginx proxy_pass 代理域名
一.描述 1.nginx配置转发的时候使用的是域名,即使用dns服务方便配置和负载.但是nginx默认会进行缓存,当域名对应的服务出问题的时候就会报错,只有默认的缓存时间到了才会再次进行解析,ngin ...
- SpringMVC学习(二)———— 参数绑定
一.参数绑定 1.1.什么是参数绑定? 客户在浏览器端会提交一些参数到服务器端,比如用户的登录等,就会传username 和 password过来,springmvc则通过参数绑定组件将请求参数的内容 ...
- 【Go】IP地址转换:数字与字符串之间高效转换
转载:https://blog.thinkeridea.com/201903/go/ip2long.html IP 地址库中 IP 地址的保存格式一般有两种,一种是点分十进制形式(192.168.1. ...
- 解读经典-《C#高级编程》第七版-Chapter1-.Net体系结构-Page13-20
01 程序集 程序集是包含编译好的.基于.Net Framework的代码逻辑单元.一般来说,在Visual Studio中的一个项目即一个程序集,而一个项目中包含多种不同的代码文件.程序集分为可执行 ...
- ORA-00257 archiver error的处理
ORA-00257 archiver error的处理 检查flash recovery area的使用情况 SQL> set linesize 100 SQL> col paramete ...
- python抓取电影<海王>影评词云生成
海王是前段时间大热的影片,个人对这种动漫题材的电影并不是很感兴趣.然鹅,最近这部电影实在太热了,正好最近看自然语言处理的时候,无意间发现了word cloud这个生成词云的库,还蛮好玩的,那就抓抓这部 ...
- Javascript 定时器调用传递参数的方法
文章来源: https://m.jb51.net/article/20880.htm 备注:先记下,以后整理: Javascript 定时器调用传递参数的方法,需要的朋友可以参考下. 无论是wind ...
- C#装箱和拆箱。
装箱:值类型-->引用类型. 拆箱:引用类型-->值类型 装箱:把值类型拷贝一份到堆里.反之拆箱. 具有父子关系 是拆装箱的条件之一. 所以: class Program { static ...
- C#中MessageBox.Show问题(让提示窗口不显示在任务栏中)
在winform中让MessageBox.Show显示的窗口不显示在任务栏中:第一个参数很明显是你要显示的内容 类型是string 语法Visual Basic(声明) Public Shared ...
- vs2010 编译平台 X86 X64 anycpu
X86既32位程序,X64既64位程序,anycpu会根据当前的操作系统位数决定 但是如果应用程序编译成anycpu,会由操作系统位数决定,如果是dll之类的,会由调用dll的主程序位数决定 所以一般 ...