如何使用SQLServer数据库查询累计值

如何使用SQLServer数据库查询累计值,第1张

如何使用SQLServer数据库查询累计值,第2张

有这样一个要求,它应该创建一个SQL Server查询,其中包括基于事件时间的累积值。一个典型的例子就是银行账户,因为你每次存取款的时间都不一样。测试提示:对于任何一个账户,都要在某个时间点计算其借方(存款)和借方(取款)之和。每次交易后,你都想知道当前的余额。列表创建了这样一个表的简单示例。
CREATETABLE [dbo]。[bank account]
([transaction id][int]IDENTITY(1,1)NOTNULL,
[transaction datetime][datetime]not NULL CONSTRAINT
[DF _ bank account _ transaction datetime]DEFAULT(getdate()),
[Amount][money]not NULL CONSTRAINT[DF _ bank account _ Amount]DEFAULT((0)),
[transaction type][char](1)COLLATE SQL _ Latin1 _ General _ CP1 _ CI _ AS not NULL,[/br ignore _ dup _ key = off)on[primary]
)on[primary]
List A
考试提示:以下是一些示例行:
1 2006-11-03 02:33:42.33 2 2006-11-03 02:34:50.467-500.00
3 2006-11-03 02:35:04
现在您可以创建一个包含当前余额的查询。因为你已经在同一列中记录了具有正值和负值的存取值,所以该列中的累积值很容易计算。要获得当前余额,您必须计算以前所有交易的总值,然后将该值添加到当前交易中。列表B中的查询实现了这一点。
SELECT
transaction id,
transactiondatetime,
amount,
(SELECT sum(amount)
from dbo . bank account As D1
where D1 . transaction datetime from dbo . bank account As d0
List B
因此,获得以下结果集:
1 2006-11-03 02:33:42.344010000添加一个BankAccountNumber列和一个指定利息金额的WHERE谓词。
您也可以反过来使用此示例,例如在库存计算中创建不同的运行。你从1000的库存开始,然后减去各种费用和收据。
这样的查询有两个好处:
●不需要存储结果。用账号或者外键操作的时候,执行起来可以快如闪电。
●你用一个标签结束交易,可以逐行检查。如果出现问题,您可以隔离导致问题的事务。

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » 如何使用SQLServer数据库查询累计值

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情