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' 

その後、それは返されます564481526.51 が、問題は2013-11-09にトランザクションがないことです。その場合、 の残高を2013-11-08取る必要があります。2013-11-08 にもトランザクションがない場合は、2013-11 の残高を取る必要があります。 -07など..つまり、特定の日付に取引がない場合、最も近い(過去の)日付の取引の残高を取得する必要があります

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 に答える