如何从两列

时间:2016-03-30 00:19:36

标签: sql-server

请建议如何组合查询,找到第一次出现的行

我有桌子

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)。

1 个答案:

答案 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的结果不能保证始终相同。