SQL Sorgusu ile AY-YIL Bazında genel toplamları listelemek.

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,155
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Herkese iyi seneler ve kolay gelsin.
Eklediğim rar dosyası içinde bulunan excel çalışma kitabında gerekli açıklamaları örnekleri ile sıralamış bulunmaktayım.
Dosya indirmeden önce konu hakkında bilgi sahibi olmak isteyen arkadaşlar için şu açıklamayı yapayım:
vtb.accdb isimli access veritabanında tbl isimli tablo bulunmaktadır. Bu tabloda: id, tarih, konu, gelir, gider şeklinde başlıklar var. Excel sayfasında ki UserFormda bulunan "AYLAR BAZINDA GENEL TOPLAM" butonuna basıldığı zaman Listbox üzerinde aşağıda ki gibi bir tablo oluşmasını istiyorum:

...................... Gelir......Gider 'Bilgi için yazılmıştır. Bu başlıkların gelmesine gerek yok.
Ocak 2015.........115........105
Şubat 2015..........85.........50
Mart 2015..........150.........85
Nisan 2015.........161.........88
Mayıs 2015.........209.......159
.....
Listede ki tarihlere ait aylar hangi aya kadarsa o kadar uzaması gerekiyor.
İlgilenen herkese önceden teşekkürler...
 

Ekli dosyalar

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Dosyanız ektedir.:cool:
Kod:
Private Sub CommandButton3_Click()

Dim conn As Object, rs As Object, yol As String

yol = ThisWorkbook.Path & "\vtb.accdb"
Set conn = CreateObject("adodb.connection")
conn.provider = "microsoft.ace.oledb.12.0"
conn.Open yol
Set rs = CreateObject("adodb.recordset")
sorgu = "select distinct format(tarih,'mmmm yyyy'),sum(gelir),sum(gider) from tbl group by tarih"
Set rs = conn.Execute(sorgu)
With ListBox1
    .RowSource = Empty
    .ColumnCount = 3
    .ColumnWidths = "90;90;60"
    .Column = rs.getrows
End With
rs.Close
Set rs = Nothing
Set conn = Nothing

End Sub
 

Ekli dosyalar

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,155
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Evren Bey, ilgilendiğiniz için çok teşekkür ederim. Ancak Ay bazında gelir ve gider alt toplamları yerine ayrıntılı gelir - gider toplamları gelmeye devam ediyor.
Kodlarınızı inceledim:
Kod:
sorgu = "select distinct format(tarih,'mmmm yyyy'),sum(gelir),sum(gider) from tbl group by tarih"
Distinct komutu ile normal olarak ay-yıl olarak istenen tarihin tekrar gelmemesi lazım. Ancak Aynı aya ait kaç gider ve gelir varsa gelmeye devam ediyor.
Örneğin:
Ay-Yıl Formatında her tarihin birer kez gelmesi gerekirken,
Mayıs 2015 alt alta 4 kez, Temmuz 2015 alt alta 3 kez geliyor.
Sebebini çözemedim.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
O zaman vt'ye bir alan ekleyip o alanı metin olarak tanımlayıp,ay ve yılı oraya yazıp,sonra sorguda o alanı kullanabilirisiniz.:cool:
 

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,155
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Biraz kurcaladıktan sonra sınama-deneme yolu ile aşağıda ki şekilde ay bazında alt toplamları almayı başardım:
Kod:
sorgu = "select distinct(format(tarih,'MMMM-YYYY')),sum(gelir),sum(gider) from tbl " & _
"group by format(tarih, 'MMMM-YYYY') order by format(tarih, 'MMMM-YYYY')"
Ancak sorun bitmiş değil.
Çünkü bu kezde sıralamayı ayların alfabetik sırasına göre yapıyor.
(Ağustos, Aralık, Ekim, Eylül, ...)
Sorun günceldir, katkılarınızı bekliyorum.
 

Orion1

Uzman
Uzman
Katılım
1 Mart 2005
Mesajlar
22,254
Excel Vers. ve Dili
Win7 Home Basic TR 64 Bit

Ofis-2010-TR 32 Bit
Aşağıdaki kod işinizi görecektir.:cool:
Kod:
sorgu = "select format(month(tarih),'00'),format(tarih,'MMMM-YYYY'),sum(gelir),sum(gider) from tbl " & _
"group by format(month(tarih),'00'),format(tarih, 'MMMM-YYYY') order by format(month(tarih),'00')"
 

Ekli dosyalar

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,155
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Aşağıdaki kod işinizi görecektir.:cool:
Kod:
sorgu = "select format(month(tarih),'00'),format(tarih,'MMMM-YYYY'),sum(gelir),sum(gider) from tbl " & _
"group by format(month(tarih),'00'),format(tarih, 'MMMM-YYYY') order by format(month(tarih),'00')"
Evren Bey, çok teşekkür ederim. Gerçekten güzel bir çözüm bulmuşsunuz..
 
Katılım
1 Aralık 2010
Mesajlar
305
Excel Vers. ve Dili
Office 2010
Merhabalar,

Aşağıdaki sorguda en alt satıra kolon dip toplamlarını nasıl aldırabilirim?

Teşekkürler

SQL:
SELECT BAYİADI ,
Yıl ,
[1] Ocak ,
[2] Şubat ,
[3] Mart ,
[4] Nisan ,
[5] Mayıs ,
[6] Haziran ,
[7] Temmuz ,
[8] Ağustos ,
[9] Eylül ,
[10] Ekim ,
[11] Kasım ,
[12] Aralık
FROM ( SELECT BAYİADI ,
YEAR(TARİH) [Yıl] ,
MONTH(TARİH) [Ay] ,
TOPLAMKG
FROM dbo.TBLİSLEMLİNE
) TableDate PIVOT ( SUM(TOPLAMKG) FOR [Ay] IN ( [1], [2], [3], [4],
[5], [6], [7], [8],
[9], [10], [11], [12] ) ) PivotTable;
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Aşağıdaki linke bir bakın, işinize yarayabilir....


.
 
Katılım
1 Aralık 2010
Mesajlar
305
Excel Vers. ve Dili
Office 2010
Merhaba Haluk Bey,

Değerlendirmeniz için teşekkür ederim.

O konuyu bütün mesajları ile birlikte iki defa okudum ama bir sonuç çıkaramadım.

Eklentileri göremem ile ilgili olabilir.

Siz nasıl çözmüştünüz?


Bu eklentiyi dosya.tc adresine yükleyebilir misiniz?
 
Katılım
1 Aralık 2010
Mesajlar
305
Excel Vers. ve Dili
Office 2010
Eyvallah üstad,

Çok teşekkür ederim. Kolay gelsin.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Bilgi için;

Bu işin "Google Sheets" de yapılmasına ilişkin örnek, kişisel blog'um da yer almaktadır....







Link:


.
 
Üst