• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Sql sorgusunda en yakın değer

  • Konbuyu başlatan Konbuyu başlatan tamer42
  • Başlangıç tarihi Başlangıç tarihi

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,202
Excel Vers. ve Dili
Office 2013 İngilizce
Merhabalar,
öncelikle herkese iyi haftalar dilerim.

ekli dosyada yer alan sql sorgusunda aranan değer veri tabanında yoksa; bu değere en yakın değerin aldırılması sağlanabilir mi?

özetle 250 değeri bulunmuyorsa, 251 değerinin alınması, yada ilgili sütundaki 250 değerine en yakın değerin aranması

Kod:
sorgu = "select * FROM [Veri$] where [Amount]=250"

şimdiden teşekkürler,
iyi çalışmalar.
 

Ekli dosyalar

250 ye aynı uzaklıktaki iki değerden hangisi alınmalı? 250 yok 248 ve 252 var diyelim
 
250 ye aynı uzaklıktaki iki değerden hangisi alınmalı? 250 yok 248 ve 252 var diyelim
eşit uzaklıkta olması iki farklı sayı olması durumunda çok önemli değil, her hangi biri alınabilir; yada yüksek olan olan alınabilir
 
Kod:
sorgu = "SELECT TOP 1 * FROM [Veri$] ORDER BY ABS([Amount]-250)"
 
Kod:
sorgu = "SELECT TOP 1 * FROM [Veri$] ORDER BY ABS([Amount]-250)"

Veysel Hocam 1. alanda alanda kritere uygun çok değer olduğunda 2. kriteri nasıl ekleyebiliriz.
[Amount] alanına da 250' ye en yakın olanlar ve
[Amount2] alanına da 350' ye en yakın olanları

alsın demek için;

aşağıdaki şekilde yazdım ama hata verdi

Kod:
sorgu = "SELECT TOP 1 * FROM [Veri$] ORDER BY ABS([Amount]-250) and ABS([Amount2]-350)"
 
Merhaba, and yerine virgül kullanın.
 
Kod:
sorgu = "SELECT TOP 1 * FROM [Veri$] ORDER BY ABS([Amount]-250), ABS([Amount2]-350)"
sorgu = "SELECT TOP 1 * FROM [Veri$] ORDER BY (ABS([Amount]-250) + ABS([Amount2]-350))"
 
Kod:
sorgu = "SELECT TOP 1 * FROM [Veri$] ORDER BY ABS([Amount]-250), ABS([Amount2]-350)"
sorgu = "SELECT TOP 1 * FROM [Veri$] ORDER BY (ABS([Amount]-250) + ABS([Amount2]-350))"
Veysel hocam ilginize teşekkürler
 
Kod:
sorgu = "SELECT TOP 1 * FROM [Veri$] ORDER BY ABS([Amount]-250), ABS([Amount2]-350)"
sorgu = "SELECT TOP 1 * FROM [Veri$] ORDER BY (ABS([Amount]-250) + ABS([Amount2]-350))"

buraya bir de [ID]>3 diye bir koşul eklemek istersek söz dizimi nasıl olmalıdır?

bu şekilde hata aldım
Kod:
sorgu = "SELECT TOP 1 * FROM [Veri$]  where [ID]>3 and  ORDER BY ABS([Amount]-250), ABS([Amount2]-350)"
[CODE]sorgu = "SELECT TOP 1 * FROM [Veri$]  where [ID]>3,  ORDER BY ABS([Amount]-250), ABS([Amount2]-350)"
 
Kod:
sorgu = "SELECT TOP 1 * FROM [Veri$] WHERE VAL([ID])>3 ORDER BY ABS([Amount]-250), ABS([Amount2]-350)"
 
Merhabalar,
Ekli dosyada "E2" hücresindeki değere en yakın 5 değeri almak istiyordum fakat bir türlü sonucu alamadım,

nerede hata yapıyor olabilirim, yardımlarınız için şimdiden teşekkürler,

iyi pazarlar.
 

Ekli dosyalar

Merhabalar,
Ekli dosyada "E2" hücresindeki değere en yakın 5 değeri almak istiyordum fakat bir türlü sonucu alamadım,

nerede hata yapıyor olabilirim, yardımlarınız için şimdiden teşekkürler,

iyi pazarlar.
Sorunu buldum, Data sayfasında boş satırlar varmış, onları silince sorun çözüldü;

Aşağıdaki sorguda "a" tam değer olunca sonuç döndürüyor, ondalık kısmı (4894,39) olduğu zaman hata veriyor, bunu aşmanın bir yolu var mıdır?
Kod:
a = CLng(sh1.Cells(2, 13))
 sorgu = "SELECT TOP 5 * FROM [Data$] ORDER BY ABS([AB13]-" & a & ")"
 
Boş satırların olma durumu varsa aşağıdaki gibi kullanabilirsiniz.

sorgu = "Select Top 5 * From [Data$] Where Not IsNull([AB13]) Order By Abs([AB13]-" & a & ") "
 
CLng değeri "Long Integer" olarak geri döndürür..... CDbl deneyin

.
 
CLng değeri "Long Integer" olarak geri döndürür..... CDbl deneyin

.
Haluk hocam teşekkürler, şöyle bir sorun daha var
Kod:
ABS([AB13]-" & a & ")

burada fark işlemini yapmıyor, sadece [AB13] yazılı gibi işlem yapıyor.
 
Geri
Üst