2014-10-28 99 views
0

我有數據表(db是MSSQL):輸入日期:2014年1月9日獲取記錄具有接近日期定輸入日期

ID OrderNO PartCode FundId Quantity lastmodified 
417 2144  44917  A  100  31-08-2014 
418 7235  11762  B  5  31-08-2014 
419 9991  60657  C  100  31-08-2014 
420 9992  60658  D  90  31-08-2014 
421 9993  60659  A  100  31-07-2014 
422 9994  60660  B  90  31-07-2014 
421 9993  60659  C  100  31-07-2014 
422 9994  60660  D  90  31-07-2014 

我想提出一個返回查詢記錄集合,但僅限於上次修改的日期,與給定的輸入日期相比更小。

從示例表,我想找回以下信息:

ID OrderNO PartCode FundId Quantity lastmodified 
417 2144  44917  A  100  31-08-2014 
418 7235  11762  B  5  31-08-2014 
419 9991  60657  C  100  31-08-2014 
420 9992  60658  D  90  31-08-2014 

謝謝!

+2

密切關係較小意味着差異多少天? – knkarthick24 2014-10-28 08:55:46

+0

他的意思是「最接近」...... – SmartDev 2014-10-28 10:58:52

回答

0

試試這個..

select ID, OrderNO, PartCode, FundId, Quantity, lastmodified from Table where lastmodified = (select max(lastmodified) from Table where lastmodified < '01-09-2014') 
0

試試這個:

select * from yourtable where lastmodified = (select max(lastmodified) from yourtable where lastmodified < inputdate) 
0

下面的查詢會給你從給定輸入日期兩天的結果差異:
注:更改號碼2到任何數量根據您的req。

select * from table where lastmodified between DATEADD(day, -1, inputdate) AND DATEADD(day, -2, inputdate) 
+1

@GarethD:問題第一行說db是MSSQL。 – knkarthick24 2014-10-28 09:11:25

+0

我的不好,看到了現在已被刪除的MySQL標籤。 – GarethD 2014-10-28 09:12:53

+0

@GarethD:通過你學習了上述答案的MySQL語法。我應該感謝你。 – knkarthick24 2014-10-28 09:17:51

0

這將返回某個日期之前每個FundId的上次更新;

with cte as 
(
    select 
    *, 
    row_number() over(partition by FundId order by lastmodified desc) as rn 
    from @t where lastmodified < '2014-09-01' 
) 
select * 
from cte 
where rn = 1;