0

我需要找到特定日期的期末余额。表结构如下

    MainCode    TranDate    Balance
    930000003   2013-11-06  564481526.51
    930000003   2013-11-07  571703938.55
    930000003   2013-11-08  571690438.55
    930000003   2013-11-10  551992179.45

当我开火时

select
 Trandate,Balance 
from tbl where MainCode='930000003' and
TranDate ='2013-11-06' 

然后它会返回,但问题是2013-11-09564481526.51 没有交易,在这种情况下,我必须平衡,如果 2013-11-08 也没有交易,那么我必须平衡 2013-11 -07 等等.. 即如果在给定日期没有交易,我必须在最近(过去)日期交易中取得余额2013-11-08

4

2 回答 2

2

您可以按日期排序数据并使用 top

select top 1 Trandate,Balance 
from tbl 
where MainCode='930000003' 
and TranDate <= '2013-11-09' 
order by TranDate desc
于 2013-11-14T08:03:53.630 回答
0

TranDate您可以对按降序排列的日期使用子查询。

select Trandate,Balance 
from tbl t1
where t1.MainCode='930000003' 
and t1.TranDate = (SELECT TOP 1 TranDate FROM tbl t2
                   WHERE t1.MainCode=t2.MainCode
                   AND   t2.TranDate <= '2013-11-09'
                   ORDER BY TranDate DESC)

Demo

于 2013-11-14T08:08:40.883 回答