SQL SELECT TOP Kullanımı hk.

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,202
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.
 
Kod:
 DISTINCT TOP 15
olarak dener misiniz?
 
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

İ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
 
Geri
Üst