• DİKKAT

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

SQL DISTINCT Kullanımı

  • Konbuyu başlatan Konbuyu başlatan tamer42
  • Başlangıç tarihi Başlangıç tarihi

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.
 
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])"
 
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.
 
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.
 
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
 
Denediğim şekilde resimdeki gibi.

 
Geri
Üst