请建议如何组合查询,找到第一次出现的行
我有桌子
Date Counter
01.01.2005 208,5
02.01.2005 209,5 <----- start
03.01.2005 210,5
04.01.2005 211,5
08.01.2005 16,5
09.01.2005 17,2
10.01.2005 18,8 <------ correct
11.01.2005 19,7
12.01.2005 20,7
13.01.2005 21
14.01.2005 116,3
15.01.2005 120,4
16.01.2005 135,2
17.01.2005 1,1
18.01.2005 10,3
19.01.2005 18,7 <------ wrong
20.01.2005 14,2
21.01.2005 8,5
22.01.2005 7,1
我需要通过计数器18.5(从2005年1月2日开始)提取日期,因为该值不在表中可能采用下一个更高的值。
我尝试使用开始日期进行搜索(因为表格有千个日期,计数器介于0-499之间)和价值限制(更高或相等)。
select top 1 Date from Tabel1 where Date > 02.01.2005 AND Counter >= 18.5
此查询返回错误结果 - 日期03.01.2005, 但正确必须是10.01.2005。 希望得到任何帮助。提前谢谢。
(我使用:sql 2008 r)。
答案 0 :(得分:0)
使用ORDER BY
时需要设置TOP
子句。在这种情况下,您希望获得最低Counter
:
SELECT TOP 1 *
FROM tbl
WHERE
Date > CAST('20050102' AS DATE)
AND Counter >= 18.5
ORDER BY Counter
请注意,如果没有ORDER BY
,则TOP 1
的结果不能保证始终相同。