sql-server - 如何在 SQL Server 中获取累积记录?
问题描述
我在 SQL Server 中有一些以下格式的数据。
declare @statement table
(
acctno int,
statDate date,
tod int,
lastDate date
)
insert into @statement select 123,'2018-02-12',567,'2018-01-12'
insert into @statement select 123,'2018-03-12',580,'2018-02-12'
insert into @statement select 123,'2018-04-12',567,'2018-03-12'
--select * from @statement
declare @txn table
(
acct int,
txndate date,
amount int
)
insert into @txn select 123,'2018-02-11',400
insert into @txn select 123,'2018-02-18',400
insert into @txn select 123,'2018-02-25',400
insert into @txn select 123,'2018-03-11',400
insert into @txn select 123,'2018-03-25',400
两个表的结果类似如下。
] 1
现在我想要如下所示的结果:
我试图用这个查询来得到它:
;with cte as
(
select
acctno, statDate, tod, txndate, amount, lastDate
from
@statement
inner join
@txn on acctno = acct
)
select *
from @txn t
left join cte on acct = acctno
and t.txndate between statDate and lastDate
但是结果没有按预期返回 - 请帮助我获得所需的结果。
解决方案
我认为你可以更简单地做到这一点
select s.acctno,statDate,tod,txndate,amount,lastDate
from @txn t
Inner join @statement s
On s.acctno = t.acct
And t.txndate Between s.lastDate and s.startDate
您可能需要将 BETWEEN 更改为“<”以进行 startDate 比较。
推荐阅读
- android - 来自不同类的片段中的启动方法
- javascript - 检查输入是否检查 ONLOAD 和 ONCHANGE
- java - 通过单击按钮进行 Google Duo 音频/视频通话
- java - 频繁的“偏移超出范围”消息,消费者遗弃的分区
- java - 从 Google 电子表格获取数据到我的应用程序的代码突然停止工作
- python - 在 Python 中发送发布请求以登录网站所涉及的步骤
- selenium - 我们应该在 @BeforeClass 中使用 assert 还是在 TestNG 中使用 @BeforeTest 注释,这样做是一个好习惯吗?
- java - 如何为 Firebase 数据库异常添加内置类的无参数构造函数?
- java - 事件监听器的控制流
- python-3.x - 用另一个值更新熊猫数据框的正确方法