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_结余数据的计算方法

SQL Server中,我们可以使用SELECT语句合WHERE子句来按日期查询数据。 首先,我们需要确保数据的日期字段是正确的日期数据类型,如DATE、DATETIME或SMALLDATETIME。推荐使用DATE或DATETIME数据类型,因为它们提供了更广泛的日期和时间范围。 查询语句的基本构是:SELECT 列名 FROM 表名 WHERE 列名 = 日期。 例如,假设我们有一个名为"orders"的表,包含以下列:order_id、order_date、customer_name和total_amount。我们想要查询2022年1月1日的订单。 查询语句如下: SELECT order_id, order_date, customer_name, total_amount FROM orders WHERE order_date = '2022-01-01'; 需要注意的是,日期值通常需要使用单引号引起来作为字符串。 如果想要查询2022年1月的所有订单,可以使用日期函数MONTH()。查询语句如下: SELECT order_id, order_date, customer_name, total_amount FROM orders WHERE MONTH(order_date) = 1; 同样地,使用YEAR()函数可以查询某一年的数据。例如,查询2022年的所有订单: SELECT order_id, order_date, customer_name, total_amount FROM orders WHERE YEAR(order_date) = 2022; 此外,SQL Server还提供了一些其他的日期函数,例如DATEPART()、DATEDIFF()、DATEADD()等,可以用来处理日期和时间相关的计算和比较。 综上所述,SQL Server中按日期查询数据可以使用SELECT语句合WHERE子句和日期函数实现,具体的查询条件根据需来确定。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值