我在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更改为“