none
Bakiye Update belirli tarihten sonrası? RRS feed

  • Soru

  • Merhaba

    Bakiye BakiyeTür Tarih

    100        B           01.01.2000

    200        A           01.01.2000

    300        B           01.01.2000

    700       A

    Yukarıdaki dataya update yapmak istiyorum. Table ismi hareket olsun. 500 B ekleyerek update yapmak istiyorum.

    Bu durumda yeni data aşağıdaki gibi olmalıdır.

    600 B

    300 B

    800 B

    200 A

    Bu dataya da 400 A ekleyerek update yapmak istiyorum

    200 B

    100 A

    400 B

    600 A

    olmalı.

    Duruma göre B lu A bakiyeler gelebilir.

    Bu nu yapabilecek SQL cümlesini yazabilirmisiniz ? Update cümlesini

    Teşekkür ederim.

    10 Mart 2012 Cumartesi 14:00

Tüm Yanıtlar

  • Aşağıdaki kodla yapabilirsiniz.

    declare @tutar money, @eklenecekTutar money, @Tur char(1)
    select @eklenecekTutar = 500, @Tur = 'B'

    begin tran
    update hareket set 
    @tutar = Bakiye + (case BakiyeTur when 'B' then 1 else -1 end) *  @eklenecekTutar,
    Bakiye = abs(@tutar),
    BakiyeTur = case when @tutar < 0 then  case BakiyeTur when 'B' then 'A' else 'B' end  else BakiyeTur end

    select * from hareket

    select @eklenecekTutar = 400, @Tur = 'A'

    update hareket set 
    @tutar = Bakiye + (case BakiyeTur when 'A' then 1 else -1 end) *  @eklenecekTutar,
    Bakiye = abs(@tutar),
    BakiyeTur = case when @tutar < 0 then  case BakiyeTur when 'A' then 'B' else 'A' end  else BakiyeTur end

    select * from hareket

    --Commit
    --rollback

    10 Mart 2012 Cumartesi 21:21
  • Teşekkür Ederim Cevap İçin.

    Peki

    Borç Alacak benim table ımda mevcut. Gridde bakiye ve bakiye türünü gösterebilmek için ( her kayıt için ayrı ayrı ve önceki bakiyenin devamı olacak şekilde) nasıl bir SELECT cümlesi yazılması gerekiyor. Yazabilirmisiniz ?

    11 Mart 2012 Pazar 17:34
  • Örnekler anlatır mısın? Bu ifader ile çok anlaşılmıyor.
    11 Mart 2012 Pazar 18:35
  • Örneğin

    Table

    Borc     Alacak  Tarih

    100        0        01.01.2000

    0           200      01.01.2000 

    300        0         01.01.2000

    100        0         01.01.2000

    Select sonucu gridde göstermesi gereken ise aşağıdaki gibidir.

    Borc     Alacak  Tarih                                Bakiye      BakiyeTür

    100        0        01.01.2000                        100            B

    0           200      01.01.2000                        100           A

    300        0         01.01.2000                        200          B

    100         0       01.01.2000                         300         B

    11 Mart 2012 Pazar 18:56
  • Merhaba

    Aşağıdaki SQL cümlesi bakiyeyi doğru bir şekilde veriyor. Fakat bakiye türünü vermiyor. Bakiye türünü göstermesi için ne yapmalıyım ?

    Örneğin 100 B ve 200 A Sonuç 100 bakiye ve bakiye türü ise A  bakiyeyi gösteren aşağııdaki SQL cümlesine bakiye türünü göstermesi için ne eklemeliyim ?

    SELECT     x_borc, x_alacak,
                              (SELECT     ABS(SUM(x_borc) - SUM(x_alacak)) AS Expr1
                                FROM          x_carihareket AS t2
                                WHERE      (x_harekettarihi < t1.x_harekettarihi) OR
                                                       (x_harekettarihi = t1.x_harekettarihi) AND (x_id <= t1.x_id)) AS cum
    FROM         x_carihareket AS t1
    ORDER BY x_harekettarihi, x_id

    12 Mart 2012 Pazartesi 13:59