如何在SQL SERVER中累积记录?

问题描述 投票:1回答:1

我在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

现在我想要结果如下图所示

expected Result

并且我尝试这样的查询

 ;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

但是结果未达到预期的效果,请帮助获得此结果。

sql-server common-table-expression
1个回答
0
投票

我认为您可以更简单地执行此操作

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

© www.soinside.com 2019 - 2024. All rights reserved.