您搜索最近的startDate。您只能訂購表格,然後限制結果集!檢查了這一點:
SET DATEFORMAT DMY
DECLARE @t TABLE (
id uniqueidentifier NOT NULL,
startDate datetime NOT NULL,
endDate datetime,
amount decimal(18,8) NOT NULL)
INSERT INTO @t (id, startDate, endDate, amount)
VALUES(NEWID(), '01.01.2009', NULL, 1.221)
INSERT INTO @t (id, startDate, endDate, amount)
VALUES(NEWID(), '01.03.2009', NULL, 1.221)
INSERT INTO @t (id, startDate, endDate, amount)
VALUES(NEWID(), '01.10.2011', NULL, 1.22)
INSERT INTO @t (id, startDate, endDate, amount)
VALUES(NEWID(), '21.04.2011', NULL, 221)
INSERT INTO @t (id, startDate, endDate, amount)
VALUES(NEWID(), '11.06.2011', NULL, 199221)
INSERT INTO @t (id, startDate, endDate, amount)
VALUES(NEWID(), '01.01.2009', NULL, 1221)
SELECT TOP 1 * FROM @t
ORDER BY ABS(DATEDIFF(day, startDate, GETDATE()))
感謝巴里的答案,但有一個小小的思念。當最近的startDate to TODAY的endDate小於TODAY時,則下一行(如果存在的話)應該是一個。例如 - 如果今天是5/19,我有2行 - 一個是startDate 5/10和endDate 5/17,第二行是startDate 5/22,那麼它就是第二行。也許一個小的修復你的SQL會有所幫助。 – CocaCola 2011-05-19 13:38:20