0
我有一個SQL Server 2008的表具有以下數據(小樣本)TSQL返回的第一條記錄
id Date Value
20448D6F-4099-408D-85FE-11EC6690CDB8 2010-06-01 1
20448D6F-4099-408D-85FE-11EC6690CDB8 2010-06-02 2
20448D6F-4099-408D-85FE-11EC6690CDB8 2010-06-03 3
20448D6F-4099-408D-85FE-11EC6690CDB8 2010-06-04 4
20448D6F-4099-408D-85FE-11EC6690CDB8 2010-06-05 NULL
EF595DE6-FF57-4625-8254-287F49843445 2010-06-02 2
EF595DE6-FF57-4625-8254-287F49843445 2010-06-03 3
EF595DE6-FF57-4625-8254-287F49843445 2010-06-04 4
EF595DE6-FF57-4625-8254-287F49843445 2010-06-05 NULL
C6F459EF-1493-4864-81C2-E5B55283EF0C 2010-06-04 45
C6F459EF-1493-4864-81C2-E5B55283EF0C 2010-06-05 NULL
我運行查詢
select *
from [test].[dbo].[testtable]
where id in
(
select id
from [test].[dbo].[testtable]
where Date='2010-06-05' and Value is null
)
and Date = DATEADD(D, -4, '2010-06-05')
返回
id Date Value
20448D6F-4099-408D-85FE-11EC6690CDB8 2010-06-01 1
但是當記錄不存在2010-06-01
我想返回下一個最短日期
所以我會從樣本看,效果也
id Date Value
20448D6F-4099-408D-85FE-11EC6690CDB8 2010-06-01 1
EF595DE6-FF57-4625-8254-287F49843445 2010-06-02 2
C6F459EF-1493-4864-81C2-E5B55283EF0C 2010-06-04 45
我有幾百萬的記錄,我怎麼能在T-SQL查詢做到這一點?
感謝
這是行不通的療法,也可以記錄像EF595DE6,FF57-4625-8254-287F49843445 2010-05-05 444將返回 – user2062675 2013-05-09 19:29:35
@ user2062675 - 只需添加條件,以便日期必須大於或等於6/1/2010然後 – sgeddes 2013-05-09 19:30:50
對不起,我是一個新手,你可以修改你的答案嗎? – user2062675 2013-05-09 19:31:39