SQL UNION Kullanımı

tamer42

Destek Ekibi
Destek Ekibi
Katılım
11 Mart 2005
Mesajlar
2,962
Excel Vers. ve Dili
Office 2013 İngilizce
Arkadaşlar merhaba,

Bilindiği üzere UNION operatörü ile iki adet tablomuzdaki seçeceğimiz alanları birleştirerek tek bir tablo alanıymış gibi kullanabiliyoruz,
Aşağıdaki kod ile tbl1 ve tbl2 adındaki iki tabloda Gün, Ay ve Yıl alanlarındaki veriler tekrar edenler bir defa alınmak suretiyle birleştirilmiş olunur.

Yalnız burada; Ekli görselde görünceği üzere her iki tabloda aynı yıl, ay ve gün' deki tekrar edenler alt-alta iki defa alınmak suretiyle getirilmiş durumda;

Benim istediğim aynı yıl, ay ve gün' deki tekrar eden verilerde miktarlar toplanmak suretiyle birleştirilerek bir defa defa yazılması nasıl sağlanabilir?

Örnek: 12 Ekim 2022 de 367 ve 736 adet olmak üzere iki tablodan dolayı iki satır geliyor
Benim istediğim tek satırda Miktar alanında (367+ 736) 1103 değerini getirmesi

Kod:
  Sql1 = "Select [Gün],[Ay],[Yıl],Sum([Adet]) AS Miktar from " & tbl1 & _
  " Group By [Gün],[Ay],[Yıl] ORDER BY [Yıl],[Ay],[Gün]"
  
    Sql2 = "Select [Gün],[Ay],[Yıl],Sum([Adet]) AS Miktar from " & tbl2 & _
  " Group By [Gün],[Ay],[Yıl] ORDER BY [Yıl],[Ay],[Gün]"

strSQL = Sql1 & " UNION " & Sql2
Set RS = cn.Execute(strSQL)


    sht.Range("A2").CopyFromRecordset RS


Set RS = Nothing
ilginiz için şimdiden teşekkürler,
iyi Çalışmalar.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,455
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

Kendi sorgunuza uyarlarsınız.

Sütun Başlıkları ; Day - Month - Year - Amount
Sayfa İsimleri ; Sheet1 - Sheet2

C++:
        My_Query = "Select My_Table.Day,My_Table.Month,My_Table.Year,Sum(My_Table.Amount) From " & _
                   "(Select Day,Month,Year,Amount From [Sheet1$] " & _
                   "Union All Select Day,Month,Year,Amount From [Sheet2$]) As My_Table " & _
                   "Group By My_Table.Day,My_Table.Month,My_Table.Year"
 

tamer42

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

Kendi sorgunuza uyarlarsınız.

Sütun Başlıkları ; Day - Month - Year - Amount
Sayfa İsimleri ; Sheet1 - Sheet2

C++:
        My_Query = "Select My_Table.Day,My_Table.Month,My_Table.Year,Sum(My_Table.Amount) From " & _
                   "(Select Day,Month,Year,Amount From [Sheet1$] " & _
                   "Union All Select Day,Month,Year,Amount From [Sheet2$]) As My_Table " & _
                   "Group By My_Table.Day,My_Table.Month,My_Table.Year"
Korhan Hocam çok teşekkürler, versiğiniz sorgu kodu gayet güzel çalışmakta;

müsadelerinizle bu konuda bir şey daha sormak istiyorum.

Tarih_Saat formatında oluşturuan (15.11.2022 11:21) [Tarih-Saat] alanından saatten bağımsız olarak sadece tarihe göre gruplandırmak için aşağıdaki kodu oluşturdum, yalnız ekli hata mesajını veriyor.

Kod:
    My_Query = "Select Format(My_Table.[Tarih-Saat],'dd.mm.yyyy'),Sum(My_Table.Adet) From " & _
                   "(Select Format([Tarih-Saat],'dd.mm.yyyy'), Adet From [tblKargo] " & _
                   "Union All Select Format([Tarih-Saat],'dd.mm.yyyy'),Adet From [tblBayii]) As My_Table " & _
                   "Group BY Format(My_Table.[Tarih-Saat],'dd.mm.yyyy')"
tekrar teşekkürler,

iyi Çalışmalar.
 

Ekli dosyalar

Üst