none
Sql kümülatif ve sıra numarası RRS feed

  • Soru

  • Merhaba üstatlar,
    Sizden ricam sorumu sonuna kadar iyice okuyun. acil yardıma ihtiyacım var...
    1 - Delphi ve access veritabanı kullanıyorum.

    access veritabanında hareket adında bir tablom var bu tabloda id, tarih, alacak, borc, bakiye adında alanlar var delphide aşağıdaki gibi bir çıktı elde etmem gerekiyor...

     
    Bakiyeyi sql ile nasıl hesaplatabilirim. Kayıtlar tarihe göre sıralı olacak tarih aynıysa id e göre sıralı olacak. Tabi her yeni kaydın tarihi geçmiştede olabileceği için yeni kayıt ekledikten sonra ve her güncellemedende sonra bunun hesaplanması gerekiyor. Bu işlemi nasıl yaparım?

    Delphi içinden kodla yaptırınca uzun sürüyor. bu yüzden sql ile yapmanın bir yolunu bulmam gerekiyor.

    Response.Write "Müslüm CENGİZ"

    25 Nisan 2012 Çarşamba 09:34

Yanıtlar

  • Mrhaba,

    Self join ile yapabilirsiniz.

    Örneğin:

    SELECT *,
    (SELECT SUM(alacak)-SUM(borc) FROM
    hareket h2
    WHERE h2.id<=h1.IDENTITYCOL) AS bakiye

     FROM hareket h1


    http://ismailadar.com/

    • Yanıt Olarak Öneren MustafaTorun 26 Nisan 2012 Perşembe 12:33
    • Yanıt Olarak İşaretleyen Serkan Bark 2 Mayıs 2012 Çarşamba 06:35
    25 Nisan 2012 Çarşamba 12:50

Tüm Yanıtlar

  • Aslında bunu sql ile yapabilirsin ama tam dediğini anlamadım söyle göstereyim.

    Select id,tarih, (bakiye-alacak) as 'Borc'

    From hareket

    order by tarih

    burdan yola çıkmanı dilerim. Sanırım yukardaki alanlardan biri gereksiz. Sen sorguyu böyle yazarsan daha rahat edersin. kolonların ne işe yaradığını bilmiyorum çünkü

    25 Nisan 2012 Çarşamba 10:02
  • Mrhaba,

    Self join ile yapabilirsiniz.

    Örneğin:

    SELECT *,
    (SELECT SUM(alacak)-SUM(borc) FROM
    hareket h2
    WHERE h2.id<=h1.IDENTITYCOL) AS bakiye

     FROM hareket h1


    http://ismailadar.com/

    • Yanıt Olarak Öneren MustafaTorun 26 Nisan 2012 Perşembe 12:33
    • Yanıt Olarak İşaretleyen Serkan Bark 2 Mayıs 2012 Çarşamba 06:35
    25 Nisan 2012 Çarşamba 12:50