SQL - Count

Katılım
15 Mayıs 2015
Mesajlar
518
Excel Vers. ve Dili
Microsoft Office 2019
Altın Üyelik Bitiş Tarihi
26/06/2023
Merhabalar

sql sorgu konusunda bilgiye danışcam.

Tablodaki tekrarlayan dataları dublicate yapmadan saydırmak istiyorum

Adana

Adana

Adana

Eskişehir

Eskişehir

Eskişehir

Eskişehir

Eskişehir

Eskişehir

Konya



Tablo buyken sorgu ile count ile sayarak aşağıdaki gibi çıktı almak istiyorum. Yardımlarınızı bekliyorum

Adana

3​

Adana

 

Adana

 

Eskişehir

6​

Eskişehir

 

Eskişehir

 

Eskişehir

 

Eskişehir

 

Eskişehir

 

Konya

1​

 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,237
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
SQL:
SELCT YOUR FIELD, Count(YOUR FIELD) AS SAY
FROM [YOUR TABLE]
 
Katılım
15 Mayıs 2015
Mesajlar
518
Excel Vers. ve Dili
Microsoft Office 2019
Altın Üyelik Bitiş Tarihi
26/06/2023
236519

Zeki bey , denedim bu hatayı verdi.

Group by yapınca Tekrarlayan kayıdı tek satır gösteriyor.
Kod:
Private Sub CommandButton1_Click()
Call ConDB
sorgu = "SELECT stok , count(stok) as say   FROM liste where kod ='FAF' GROUP BY stok"
kyt.Open sorgu, bgln, 1, 1
Range("A1").CopyFromRecordset kyt
End Sub
 

Zeki Gürsoy

Uzman
Uzman
Katılım
31 Aralık 2005
Mesajlar
4,237
Excel Vers. ve Dili
Office 2019 (64 bit) - Türkçe
Sum/Count gibi aggregate fonksiyonlar kullanıldığında GROUP BY zorunludur; hata iletisi zaten bunu belirtmiş....

Mevcut SELECT cümlesinin tek kolona düşürmesi de mantık gereğidir. Tekrarlı gelmesi için gerekli başka bir alana ihtiyacınız var ve bunu da GROUP BY tümcesine eklemeyi unutmayın.

Table structure bile paylaşamadığınız bu sorunuz için bu şekilde yardım almanız zor... Zira biraz müneccimlik gerektiriyor.

.
 
Katılım
15 Mayıs 2015
Mesajlar
518
Excel Vers. ve Dili
Microsoft Office 2019
Altın Üyelik Bitiş Tarihi
26/06/2023
Teşekkürler zeki bey. Biryandan araştırıyordum bende. aşağıdaki kod ile saydırdım. Vba ilede Tekrarlayan sayıları merge yaptım. İhtiyacımı gördü.

İlgin için teşekkür ederim.

Kod:
Range("B8:E400").UnMerge
Range("B8:E400").ClearContents
Range("B8:E400").ClearFormats
kyt.Open "select  stok,SAYY = COUNT(*) OVER(PARTITION BY stok) from liste WHERE kod = 'FAF'    order by stok;", bgln, 1, 1
kytsay = kyt.RecordCount
Range("B8").CopyFromRecordset kyt

Dim rng As Range, xCell As Range

Dim xRows As Integer

xTitleId = "KutoolsforExcel"

Set WorkRng = Application.Selection

Set WorkRng = Range("B8:E" & 8 + kytsay)

Application.ScreenUpdating = False

Application.DisplayAlerts = False

xRows = WorkRng.Rows.Count

For Each rng In WorkRng.Columns

    For i = 1 To xRows - 1

        For j = i + 1 To xRows

            If rng.Cells(i, 1).Value <> rng.Cells(j, 1).Value Then

                Exit For

            End If

        Next

        WorkRng.Parent.Range(rng.Cells(i, 1), rng.Cells(j - 1, 1)).Merge
WorkRng.Parent.Range(rng.Cells(i, 2), rng.Cells(j - 1, 2)).Merge
        i = j - 1

    Next

Next

 

    With WorkRng.Borders
        .LineStyle = xlContinuous
        .Color = vbRed
        .Weight = xlThin
    End With
    
Application.DisplayAlerts = True

Application.ScreenUpdating = True
 
Üst