Skip to main content

AccessTr.neT


Sorgu İçin Yardım Lütfen

Sorgu İçin Yardım Lütfen

#2
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.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da

Bu Konudaki Yorumlar
Sorgu İçin Yardım Lütfen - Yazar: mzizmir35mz - 21/07/2025, 16:26
RE: Sorgu İçin Yardım Lütfen - Yazar: atoykan - 24/07/2025, 03:36
RE: Sorgu İçin Yardım Lütfen - Yazar: mzizmir35mz - 24/07/2025, 10:53
Task