2016-03-30 13 views
3

sıranın ilk geçtiği bulmak için, sorgu nasıl birleştirileceğini Lütfen tavsiyeiki sütunlarından değeri ile sınırlandırılması satır almak nasıl

Ben masa

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 

var ve Sayaç 18.5 (tarafından tarihi ayıklamak gerekiyor başlangıç ​​tarihinden itibaren 02.01.2005), bu değerde bir sonraki değer elde etmek mümkün değildir.

Ben başlangıç ​​tarihini değeri ve sınırı (tablo bin tarihleri ​​ve 0-499 arası Sayaç çünkü) (rende veya eşittir) kullanarak arama çalıştı.

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

bu sorgu dönüş yanlış sonuç - tarih 03.01.2005, ama 2005/10/01 olmalıdır doğru. Yardımlarınız için umarım. Şimdiden teşekkürler.

(kullandığım: sql 2008 r).

cevap

0

Sen TOP kullanırken bir ORDER BY maddesini koymak gerekir. ORDER BY olmadan TOP 1 sonucu her zaman aynı olması garanti olmadığını

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

Not: Bu durumda Counter düşük almak istiyorum. Cevabınız için

+0

teşekkürler. Fakat bu aynı zamanda yanlış sonuçlara da yol açıyor (tarihler biraz uzakta, ancak yakınlarda olmalı). Bu tablo birden fazla değere sahip olabilir (yaklaşık 18.5). Mesela (tarihe göre listeme devam): Sayaç = 21 _116 _120 _135 _ 1 _10 _18 _14 _8 _7 _3 _0 _495. Yani, bu değerin (02.01.2005) başlangıç ​​tarihinden itibaren 18.5'e kadar olan bu değerin ilk oluşumunu bulmak mümkün mü? – SkyOlly

İlgili konular