SQL SELECT TOP Kullanımı hk.

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
2,965
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,

SQL SELECT TOP Kullanımında ; aşağıdaki kodda ayları ifade m değeri "1" olduğunda ilginç bir biçimde ilk 17 veriyi getirmekte; onun dışındaki tüm aylarda yazıldığı şekliyle sorunsuz ilk 15 değeri getirmekte;
bunun sebebi hikmeti ne olabilir? sorgunun başına TOP yazdığımızda her şekilde 15' te sınırlaması gerekmiyor mu?

şimdiden teşekkürler,


Kod:
Set Sht = ActiveSheet

y = Sht.Range("F3").Value
m = Sht.Range("F4").Value

xdeg1 = CLng(DateSerial(y, 1, 1))
xdeg2 = CLng(DateSerial(y, m + 1, 1))

Set RS2 = CreateObject("ADODB.RecordSet")

Sql2 = "Select TOP 15 Brand, SUM(Frequency) As Toplam FROM [Data$A5:Y" & LR & "]" & _
" Where [Insert Start Date]>=" & xdeg1 & " And [Insert Start Date]<" & xdeg2 & _
" And [Sales Channel] Like '" & chn & "' And [Publication Type] Like '" & tip & "' And [Category] Like '" & ktg & "'" & _
"  And Brand <> 'NO BRAND' GROUP BY Brand ORDER BY SUM(Frequency) DESC"

RS2.Open Sql2, Con, 1, 3
iyi Çalışmalar.
 

Mehmet Şahin

Destek Ekibi
Destek Ekibi
Katılım
13 Ekim 2005
Mesajlar
1,397
Excel Vers. ve Dili
Excel 2010 - 2013 Türkçe - İngilizce
Kod:
 DISTINCT TOP 15
olarak dener misiniz?
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
2,965
Excel Vers. ve Dili
Office 2013 İngilizce
Merhaba,

SQL SELECT TOP Kullanımında ; aşağıdaki kodda ayları ifade m değeri "1" olduğunda ilginç bir biçimde ilk 17 veriyi getirmekte; onun dışındaki tüm aylarda yazıldığı şekliyle sorunsuz ilk 15 değeri getirmekte;
bunun sebebi hikmeti ne olabilir? sorgunun başına TOP yazdığımızda her şekilde 15' te sınırlaması gerekmiyor mu?

şimdiden teşekkürler,


Kod:
Set Sht = ActiveSheet

y = Sht.Range("F3").Value
m = Sht.Range("F4").Value

xdeg1 = CLng(DateSerial(y, 1, 1))
xdeg2 = CLng(DateSerial(y, m + 1, 1))

Set RS2 = CreateObject("ADODB.RecordSet")

Sql2 = "Select TOP 15 Brand, SUM(Frequency) As Toplam FROM [Data$A5:Y" & LR & "]" & _
" Where [Insert Start Date]>=" & xdeg1 & " And [Insert Start Date]<" & xdeg2 & _
" And [Sales Channel] Like '" & chn & "' And [Publication Type] Like '" & tip & "' And [Category] Like '" & ktg & "'" & _
"  And Brand <> 'NO BRAND' GROUP BY Brand ORDER BY SUM(Frequency) DESC"

RS2.Open Sql2, Con, 1, 3
iyi Çalışmalar.
Arkadaşlar bu konuyla ilgili örnek dosyayı ekledim;
desteğiniz için şimdiden teşekkürler;



Not: Bu arada bir şey farkettim, sql sorgusunun sonundaki;
Kod:
ORDER BY SUM(Frequency) DESC
silince sorun düzeliyor.

iyi pazarlar dilerim.
 

Ekli dosyalar

Katılım
21 Temmuz 2023
Mesajlar
4
Excel Vers. ve Dili
2016
Merhaba,

SQL SELECT TOP Kullanımında ; aşağıdaki kodda ayları ifade m değeri "1" olduğunda ilginç bir biçimde ilk 17 veriyi getirmekte; onun dışındaki tüm aylarda yazıldığı şekliyle sorunsuz ilk 15 değeri getirmekte;
bunun sebebi hikmeti ne olabilir? sorgunun başına TOP yazdığımızda her şekilde 15' te sınırlaması gerekmiyor mu?

şimdiden teşekkürler,


Kod:
Set Sht = ActiveSheet

y = Sht.Range("F3").Value
m = Sht.Range("F4").Value

xdeg1 = CLng(DateSerial(y, 1, 1))
xdeg2 = CLng(DateSerial(y, m + 1, 1))

Set RS2 = CreateObject("ADODB.RecordSet")

Sql2 = "Select TOP 15 Brand, SUM(Frequency) As Toplam FROM [Data$A5:Y" & LR & "]" & _
" Where [Insert Start Date]>=" & xdeg1 & " And [Insert Start Date]<" & xdeg2 & _
" And [Sales Channel] Like '" & chn & "' And [Publication Type] Like '" & tip & "' And [Category] Like '" & ktg & "'" & _
"  And Brand <> 'NO BRAND' GROUP BY Brand ORDER BY SUM(Frequency) DESC"

RS2.Open Sql2, Con, 1, 3
iyi Çalışmalar.
Modtodays offers a wide range of safe and free game apps for Android, making it easy for users to experience exciting games on their mobile phones without having to worry about downloading from untrusted sources.
Thanks for your support, I will try it and share my results.
 

Murat OSMA

Altın Üye
Altın Üye
Katılım
23 Mayıs 2011
Mesajlar
5,500
Excel Vers. ve Dili
Microsoft 365 TR-EN
Altın Üyelik Bitiş Tarihi
31-12-2028
İlgili kodları bu şekilde kullanım deneyiniz.

C++:
xDeg1 = CLng(DateSerial(y, m, 1))
xDeg2 = CLng(DateSerial(y, m + 1, 0))

Set RS2 = CreateObject("ADODB.RecordSet")

sorgu = "SELECT TOP 15 Brand FROM [Data$A5:D" & LR & "]"
sorgu = sorgu & " WHERE [Insert Start Date] BETWEEN " & xDeg1 & " AND " & xDeg2 & ""
sorgu = sorgu & " AND Brand <> 'NO BRAND' GROUP BY Brand"

RS2.Open sorgu, Con, 1, 3
 
Üst