none
Kayıt Sayısı * Sum yapıyor Basit bir sorgu hatası RRS feed

  • Soru

  • Resimde belirttiğim gibi yazdığım sorguya nasıl bir düzeltme uygulayarak istediğim sonucu alabilirim, 1500 dönmesi gereken sonuç 4500 dönüyor yani;


    işler kayıt sayısı * 1500 şeklinde dönüyor :(

    20 Temmuz 2013 Cumartesi 09:47

Yanıtlar

  • Tamam Dostum sakin ol kızmana gerek yok, yardımcı olmaya çalışıyorum dikkat edersen

    dbo.isler.sirketAdi as [Şirket Adı],SUM(dbo.isler.toplamtutar) as BORÇ, SUM(dbo.isler.odemeler) as ÖDENEN, (SUM(dbo.isler.odemeler) - SUM(dbo.isler.toplamtutar)) as KALAN BORÇ From .......

    şeklinde istediğin sonucu alabilirsin.

    :):)  Sql sorgusu dogru çalşiyor ama V_Sunuk dediği gibi...Sorgunu once group by siz yaz inner joinden istediğin degerler geliyormu diye bak sonra

    toplamlari bul..

    Kolay Gelsin:);

     
    20 Temmuz 2013 Cumartesi 13:32
  • with cte as (select sirketKodu as musteriKodu,sum(toplamTutar) as Borc,0 as Odenen
    group by sirketKodu
    union all
    select musteriKodu,0,sum(tutar)
    group by musteriKodu)
    select musteriler.Id,sum(Borc) ToplamBorc,sum(Odenen) TopOdenen
    from musteriler inner join
    cte on musteriler.Id=cte.musteriKodu
    group by Musteri.Id


    22 Temmuz 2013 Pazartesi 06:51

Tüm Yanıtlar

  • Dostum sen SUM(dbo.isler.toplamtutar) as BORÇ derken direk olarak o bilgileri istemişsin zaten SQL Hata yapmamış. Senin doğru sonucu almak için son olarak listelediğin tabloda ÖDENEN ile BORÇ arasında ayrı bir işlem yapıp onu göstermen gerekiyor.
    20 Temmuz 2013 Cumartesi 10:17
  • bende bunu soruyorum işte soruya soruyla cevap veriyorsunuz ?

    nasıl yapacağım ?
    20 Temmuz 2013 Cumartesi 11:41
  • Tamam Dostum sakin ol kızmana gerek yok, yardımcı olmaya çalışıyorum dikkat edersen

    dbo.isler.sirketAdi as [Şirket Adı],SUM(dbo.isler.toplamtutar) as BORÇ, SUM(dbo.isler.odemeler) as ÖDENEN, (SUM(dbo.isler.odemeler) - SUM(dbo.isler.toplamtutar)) as KALAN BORÇ From .......

    şeklinde istediğin sonucu alabilirsin.

    • Yanıt Olarak Öneren V_Sunuk 20 Temmuz 2013 Cumartesi 21:08
    20 Temmuz 2013 Cumartesi 12:13
  • Tamam Dostum sakin ol kızmana gerek yok, yardımcı olmaya çalışıyorum dikkat edersen

    dbo.isler.sirketAdi as [Şirket Adı],SUM(dbo.isler.toplamtutar) as BORÇ, SUM(dbo.isler.odemeler) as ÖDENEN, (SUM(dbo.isler.odemeler) - SUM(dbo.isler.toplamtutar)) as KALAN BORÇ From .......

    şeklinde istediğin sonucu alabilirsin.

    :):)  Sql sorgusu dogru çalşiyor ama V_Sunuk dediği gibi...Sorgunu once group by siz yaz inner joinden istediğin degerler geliyormu diye bak sonra

    toplamlari bul..

    Kolay Gelsin:);

     
    20 Temmuz 2013 Cumartesi 13:32
  • with cte as (select sirketKodu as musteriKodu,sum(toplamTutar) as Borc,0 as Odenen
    group by sirketKodu
    union all
    select musteriKodu,0,sum(tutar)
    group by musteriKodu)
    select musteriler.Id,sum(Borc) ToplamBorc,sum(Odenen) TopOdenen
    from musteriler inner join
    cte on musteriler.Id=cte.musteriKodu
    group by Musteri.Id


    22 Temmuz 2013 Pazartesi 06:51
  • İki cevap geldi aklıma 

    ilki cte ile 

    with islerToplam as
    (
    select SUM(toplamTutar) as toplam,sirketKodu from isler  group by sirketKodu
    ),
    odemelerToplam as
    (
    select SUM(o.tutar) as odenen,o.musteriKodu,islerToplam.toplam from odemeler o,islerToplam
    where o.musteriKodu=islerToplam.sirketKodu
    group by o.musteriKodu,islerToplam.toplam
    )
    select o.*,m.musteriAd from odemelerToplam o inner join musteriler m on m.id= o.musteriKodu

    ikincisi 

    select SUM(i.toplamTutar) as toplam,i.sirketAD,
    (select SUM(o.tutar) from odemeler o where o.musteriKodu=i.sirketKodu) as odenen from isler i
    group by i.sirketAD,i.sirketKodu

    25 Temmuz 2013 Perşembe 06:56