Sql sorgusunda en yakın değer

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,063
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

burcin_end_muh

Altın Üye
Katılım
14 Ocak 2013
Mesajlar
161
Excel Vers. ve Dili
Türkçe 2013
Altın Üyelik Bitiş Tarihi
05-01-2028
250 ye aynı uzaklıktaki iki değerden hangisi alınmalı? 250 yok 248 ve 252 var diyelim
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,063
Excel Vers. ve Dili
Office 2013 İngilizce
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
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Kod:
sorgu = "SELECT TOP 1 * FROM [Veri$] ORDER BY ABS([Amount]-250)"
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,063
Excel Vers. ve Dili
Office 2013 İngilizce
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)"
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,402
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Merhaba, and yerine virgül kullanın.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
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))"
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,063
Excel Vers. ve Dili
Office 2013 İngilizce
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
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,063
Excel Vers. ve Dili
Office 2013 İngilizce
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)"
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,647
Excel Vers. ve Dili
Pro Plus 2021
Kod:
sorgu = "SELECT TOP 1 * FROM [Veri$] WHERE VAL([ID])>3 ORDER BY ABS([Amount]-250), ABS([Amount2]-350)"
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,063
Excel Vers. ve Dili
Office 2013 İngilizce
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

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,063
Excel Vers. ve Dili
Office 2013 İngilizce
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 & ")"
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,330
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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 & ") "
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
CLng değeri "Long Integer" olarak geri döndürür..... CDbl deneyin

.
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,063
Excel Vers. ve Dili
Office 2013 İngilizce
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.
 
Üst