• DİKKAT

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

SQL DISTINCT Kullanımı

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,201
Excel Vers. ve Dili
Office 2013 İngilizce
Merhabalar,
Aşağıdaki gibi bir tabloda;
Adi_soyadi , Sehir alanlarına göre benzersiz değerleri alacak,
aşağıdaki kodda Adi_soyadi , Sehir benzersiz olarak geliyor, yalnız ben bunların yanında tüm alanların gelmesini istiyorum. bu esnada diğer alanlar dan ilk sırada olan veriler gelebilir.

Kod:
   strSQL = "SELECT DISTINCT [Adi_soyadi], [Sehir] From [Sayfa1$]"
Örnek olarak aşağıdaki tabloda İlhan ve İstanbul 2 farklı satırda ( 4. ve 8. satır) girildiği için, bu satırlardan ilk sıradaki ( 4. satır) alabilir.

Sonuç olarak 8. satırı iptal edecek, diğerlerini olduğu gibigetirecek


No

Adi_soyadi

Sehir

Bolum

Kodu

1

Salih

İstanbul

Bilgi İşlem Sorumlusu

1234567​

2

Ayhan

Kocaeli

İdari İşler Yöneticisi

2345678​

3

Serkan

Erzincan

Muhasebe

3456789​

4

İlhan

İstanbul

Bİlgi İşlem Sorumlusu

4567900​

5

Salih

Kocaeli

Bilgi İşlem Sorumlusu

5679011​

6

Ayhan

Erzincan

İdari İşler Yöneticisi

6790122​

7

Serkan

İstanbul

Muhasebe

7901233​

8

İlhan

İstanbul

Muhasebe

9012344​




yardımlarınız için şimdiden teşekkürler
iyi Çalışmalar.
 

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,652
Excel Vers. ve Dili
Pro Plus 2021
Kod:
    Sql = "SELECT FIRST([No]), Adi_soyadi, Sehir, FIRST(Bolum), FIRST(Kodu) FROM [Data$A:E] " & _
          "GROUP BY Adi_soyadi,sehir ORDER BY FIRST([No])"
 

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
3,201
Excel Vers. ve Dili
Office 2013 İngilizce
Kod:
    Sql = "SELECT FIRST([No]), Adi_soyadi, Sehir, FIRST(Bolum), FIRST(Kodu) FROM [Data$A:E] " & _
          "GROUP BY Adi_soyadi,sehir ORDER BY FIRST([No])"
Veysel Hocam çok teşekkürler,

Burada şöyle bir durum söz konusu olabilir mi? buraya tüm alanlarının adını tek-tek yazmak yerine tüm alanları (*) al,
yada Adi_soyadi, Sehir dışında kalan tüm alanları FIRST(...) olarak değerlendir gibi...

Kod:
"SELECT FIRST([No]), Adi_soyadi, Sehir, FIRST(Bolum), FIRST(Kodu) FROM"
çünkü asıl tabloda alan sayısı epey fazla, alan adlarının hepsini tek-tek belirtmek zahmetli olabiliyor. tabiki mümkünatı varsa;

tekrar teşekkürler,
iyi çalışmalar.
 
Katılım
5 Kasım 2006
Mesajlar
603
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
alan adlarının hepsini tek-tek belirtmek zahmetli olabiliyor. tabiki mümkünatı varsa;
Bir değişken ekleyin.
Sütun adları için bir döngü kurun.
Döngüde değişkeni , ile first i birleştirin.
En sonda sorguda " & degisken & " olarak yazarsınız.
Biraz uğraşırsanız bence yaparsınız.
Ben mobilden bukadar tarif edebildim dosyayı deneyemediğim için.
Kısaca oluyor yani bende kendim için yapmıştım ordan biliyorum.
 
Katılım
5 Kasım 2006
Mesajlar
603
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Sadece mantığı anlamanız için kısa bir kod yazdım dediğim gibi döngüyü anlamanız için.

A dan E ye badar baslıklar Baslik1,Baslik2.... gibi olduğunu varsayarsak alttaki kod çalışıyor.

C#:
     Dim metin As String
    
    Set con = CreateObject("Adodb.connection")
    Set rs = CreateObject("Adodb.recordset")
    con.Open "provider=microsoft.ace.oledb.12.0;data source= " & ThisWorkbook.FullName & " ;extended properties= ""Excel 12.0;hdr=yes;imex=1"""

    For i = 3 To 5 'Baslik icin C den E ye kadar
        metin = metin & "First(" & Cells(1, i).Value & "),"
    Next
    metin = Mid(metin, 1, Len(metin) - 1)
 
    Sql = "select [Baslik1],[Baslik2], " & metin & "  from [Sayfa1$] group by [Baslik1],[Baslik2]"

    rs.Open Sql, con, 1, 3
    Me.ListBox1.Column = rs.getrows
 
Katılım
5 Kasım 2006
Mesajlar
603
Excel Vers. ve Dili
TÜRKCE Excel 2021 32bit
Denediğim şekilde resimdeki gibi.

 
Üst