Talebiniz ilk sorunuza göre biraz daha karmaşık, ilk talep doğrultusunda 4 tablodaki sorgudan 3 tanesi aynı tablo içinden tek bir verinin toplamlarını listelemek kolay. Ancak 4. tablo gider tablosunda her bir gider türü için ayrı gruplama yapılacağından bu sorgu birleştirmeye dahil edilirse örneğin adblue için toplam diğer sütunlarda fatura hgs s toplamları sonra yemek gideri toplamı bir satırda yine yanında diğer sütunlarda fatura hgs vs toplamları tekrarlanan ve tam olarak yapmak istediğinizi elde edemeyeceğiniz bir sorgu oluşur. Özetle ifade edecek lursak bu tip bir sorgunun sonucunu
Plaka GiderTuru ToplaGiderTutar ToplaFaturaTutarı ToplaAlinanLitre ToplaAlinanTl ToplaIslemTutarı
35BTC943 Adblue 3801 3084706,63 16862 788078,81 143907
35BTC943 Diğer 3135 3084706,63 16862 788078,81 143907
35BTC943 Tamir&İşçilik 1300 3084706,63 16862 788078,81 143907
35BTC943 Yemek 4593,76 3084706,63 16862 788078,81 143907
gibi karmaşık bir şekilde görürsünüz. Bunu önlemek ve istediğiniz gibi sütunlar bazında listeleyebilmek için Gider tablosunda her bir gider türüne göre toplamları alan ve bunu tranform ederek sütun haline getiren crosstab sorgusunu oluşturmak ve kaydetmek ve birleşik sorguda gider tablosu yerine bu sorguyu kullanmak gerekir. bunun için bir crosstab sorusu oluşturduğumuzda
TRANSFORM Sum([08_AracGiderKayit].Tutar) AS ToplamTutar
SELECT [01_TumAraclar].Plaka
FROM [01_TumAraclar]
INNER JOIN [08_AracGiderKayit] ON [01_TumAraclar].Plaka = [08_AracGiderKayit].PlakaNo
WHERE [08_AracGiderKayit].Tarih > #1/1/2025# AND [08_AracGiderKayit].Tarih < #3/31/2025#
GROUP BY [01_TumAraclar].Plaka
PIVOT [08_AracGiderKayit].GiderTuru IN ('Adblue', 'Diğer', 'Akaryakıt', 'Yemek', 'Tamir&İşçilik');
şeklinde olacaktır ve bunu örneğin GiderPivot adı ile kaydelim. Bu noktadan sonra ilk talebinizdeki 08_Gider tablosu yerine bu sorguyu kullanarak istediğimiz toplaları sizin istediğiniz şekilde listeleyebiliriz. Bu durumda da yeni sorgumuz
SELECT
G.Plaka,
Nz(G.[Diğer], 0) AS ToplaDigerTutarı,
Nz(G.[Adblue], 0) AS ToplaAdblueTutarı,
Nz(G.[Akaryakıt], 0) AS ToplaAkarkayıtTutarı,
Nz(G.[Tamir&İşçilik], 0) AS ToplaTamiratTutarı,
Nz(G.[Yemek], 0) AS ToplaYemekTutarı,
Nz(F.ToplaFaturaTutarı, 0) AS ToplaFaturaTutarı,
Nz(AK.ToplaAlinanTl, 0) AS ToplaAlinanTl,
Nz(H.ToplaIslemTutarı, 0) AS ToplaIslemTutarı
FROM
(((GiderPivot AS G
LEFT JOIN (
SELECT Plaka, Sum(FaturaTutarı) AS ToplaFaturaTutarı
FROM [05_HabasGelir]
WHERE Tarih > #1/1/2025# AND Tarih < #3/31/2025#
GROUP BY Plaka) AS F ON G.Plaka = F.Plaka)
LEFT JOIN (
SELECT PlakaNo, Sum(AlinanTl) AS ToplaAlinanTl
FROM [06_AkaryakitSarf]
WHERE Tarih > #1/1/2025# AND Tarih < #3/31/2025#
GROUP BY PlakaNo) AS AK ON G.Plaka = AK.PlakaNo)
LEFT JOIN (
SELECT Plaka, Sum(IslemTutarı) AS ToplaIslemTutarı
FROM [07_HgsKayit]
WHERE GirisTarihi > #1/1/2025# AND GirisTarihi < #3/31/2025#
GROUP BY Plaka) AS H ON G.Plaka = H.Plaka);
şeklinde olmalıdır.