2016-03-30 4 views
3

行の最初の発生を見つけるために、クエリを結合する方法をアドバイスしてください2列から値による制限の行を取得する方法

私はテーブル

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(で日付を抽出する必要があります開始日02.01.2005から)、この値は表内にないため、次の高い値を取ることができます。

開始日(テーブルには千の日付があり、カウンタには0〜499があるため)と値の上限(より大きいか等しい)を使用して検索しようとしました。このクエリの戻り誤った結果

select top 1 Date from Tabel1 where Date > 02.01.2005 AND Counter >= 18.5 

- 日付2005年3月1日、 が、正しいは2005年1月10日でなければなりません。 ご協力をお願いいたします。前もって感謝します。

(私はSQL 2008 rを使用します)。

答えて

0

TOPを使用する場合は、ORDER BY句を入力する必要があります。 ORDER BYせず、TOP 1の結果は常に同じであることが保証されていないことを

SELECT TOP 1 * 
FROM tbl 
WHERE 
    Date > CAST('20050102' AS DATE) 
    AND Counter >= 18.5 
ORDER BY Counter 

注:この場合、あなたはCounter最低を取得したいです。

+0

あなたの答えに感謝します。 しかし、これも間違った結果を返します(日付は遠いところにありますが近くにある必要があります)。そのテーブルには複数の値(約18.5)がある可能性があります。たとえば、(私のリストに日付順に)続行する:Counter = 21 _116 _120 _135 _1 _10 _18 _14 _8 _7 _3 _0 _495。 これは、この(18.02.2005)開始日から18.5に近いこの値の最初の出現を見つけることができるのでしょうか? – SkyOlly

関連する問題