En iyi yanıtlayıcılar
Cari Hesap Yurıyen bakiye

Soru
-
TARİH AÇIKLAMA BORC/ALACAK TUTAR 01.01.2016 BORÇ 1 10 10.01.2016 BOÇ 1 10 11.01.2016 BORÇ 1 10 15.01.2016 BORÇ 1 5 09.01.2016 ALACAK 2 15 09.01.2016 ALACAK 2 5 10.01.2016 BORÇ 1 20 11.01.2016 BORÇ 1 10 20.01.2016 ALACAK 2 20 BÖYLE BİR TABLODA (CARİ_HAREKET) YÜRÜYEN BAKİYE NASIL YAPILIR
BU KONUDA YARDIM EDERSENİZ SEVİNİRİM
YANİ LİSTWİEV GÖSTERMEK İÇİN ŞİMDİDEN TEŞEKKÜR EDERİM
Yanıtlar
-
Bastan soyleseydin keske.
WITH cte ( TARIH, ACIKLAMA, BORCALACAK, TUTAR, SiraNo ) AS ( SELECT * , ROW_NUMBER() OVER ( ORDER BY TARIH ) FROM cari ) SELECT * , ( SELECT SUM(CASE WHEN t2.BORCALACAK = 1 THEN 1 ELSE -1 END * TUTAR) FROM cte t2 WHERE t1.SiraNo >= t2.SiraNo ) FROM cte t1;
Not: Tablo yapin herhalde gercekte boyle degildir, bu haliyle pek hos degil. Aslinda cariId, islemId gibi alanlarin vardir. Bir de yuruyen bakiye isini VB6 tarafinda da yapabilirdin ama VB6 data islemlerinde o kadar yetenekli degildi yanlis hatirlamiyorsam (VFP olsa cok cok rahat olurdu).
Not2: Bir de lutfen yazdiginiz mesaji silmeyin. O kadar yazip gonder dedigimde hata almak hos olmuyor.
- Yanıt Olarak İşaretleyen Ekrem Önsoy 10 Ocak 2017 Salı 17:42
Tüm Yanıtlar
-
-
SELECT * , SUM(CASE WHEN BORCALACAK = 1 THEN 1 ELSE -1 END * TUTAR) OVER ( ORDER BY TARIH ROWS UNBOUNDED PRECEDING ) AS BAKIYE FROM tabloAd;
incorrect syntax near 'ROWS'.
HATASI VERİYOR
(SERVER 2008) Yapmaya çalıştığım şey visual basic 6.0 da tarih,borç,alacak,bakiye dizilişi ile her harekette yürüyen bakiye almak
yani kısacası cari hesap ekstresi LÜTFEN YARDIMCI OLUN.
Erdal KOÇ
- Düzenleyen kocari29 10 Kasım 2016 Perşembe 10:45
-
Bastan soyleseydin keske.
WITH cte ( TARIH, ACIKLAMA, BORCALACAK, TUTAR, SiraNo ) AS ( SELECT * , ROW_NUMBER() OVER ( ORDER BY TARIH ) FROM cari ) SELECT * , ( SELECT SUM(CASE WHEN t2.BORCALACAK = 1 THEN 1 ELSE -1 END * TUTAR) FROM cte t2 WHERE t1.SiraNo >= t2.SiraNo ) FROM cte t1;
Not: Tablo yapin herhalde gercekte boyle degildir, bu haliyle pek hos degil. Aslinda cariId, islemId gibi alanlarin vardir. Bir de yuruyen bakiye isini VB6 tarafinda da yapabilirdin ama VB6 data islemlerinde o kadar yetenekli degildi yanlis hatirlamiyorsam (VFP olsa cok cok rahat olurdu).
Not2: Bir de lutfen yazdiginiz mesaji silmeyin. O kadar yazip gonder dedigimde hata almak hos olmuyor.
- Yanıt Olarak İşaretleyen Ekrem Önsoy 10 Ocak 2017 Salı 17:42
-
Hocam Teşekkür ederim mesajları bir düzen içinde vermek istedim. İlginiz için teşekkür ederim.
İlginç olan veri tabanındaki tabloda bir ID alanı yok bunun yerine refno var ama refno önceki bir tarihe işlem yapıldığında aritmetik bir sıralamanın dışına çıkıyor. Bu yüzden zorlandım.
Erdal KOÇ
-
Set rss = connn.Execute("SELECT M.CARHARTAR,M.CARHARACIKLAMA ,( SELECT SUM(CASE WHEN CARHARGCFLAG=" & _
"1 THEN CARHARTUTAR ELSE 0 END )FROM " & vt.Text & ".dbo.CARHAR WHERE CARHAR.CARHARTAR=M.CARHARTAR AND CARHAR.CARHARREFNO=M.CARHARREFNO AND CARHARCARKOD=M.CARHARCARKOD AND CARHARSIRANO=M.CARHARSIRANO AND CARHARISTIPNO =M.CARHARISTIPNO) AS BORÇ,(SELECT SUM(CASE WHEN CARHARGCFLAG=2 THEN CARHARTUTAR ELSE 0 END ) FROM " & vt.Text & ".dbo.CARHAR WHERE CARHAR.CARHARTAR=" & _
"M.CARHARTAR AND CARHAR.CARHARREFNO=M.CARHARREFNO AND CARHARCARKOD=M.CARHARCARKOD AND CARHARSIRANO=M.CARHARSIRANO AND CARHARISTIPNO =M.CARHARISTIPNO) AS ALACAK,(SELECT SUM(CASE WHEN CARHARGCFLAG=1 THEN CARHARTUTAR ELSE 0 END -CASE WHEN CARHARGCFLAG=" & _
"2 THEN CARHARTUTAR ELSE 0 END ) FROM " & vt.Text & ".dbo.CARHAR WHERE (CARHAR.CARHARTAR<M.CARHARTAR OR (CARHAR.CARHARTAR=M.CARHARTAR AND CARHAR.CARHARREFNO<=M.CARHARREFNO AND CARHAR.CARHARSIRANO<=M.CARHARSIRANO)) AND CARHARCARKOD=M.CARHARCARKOD) AS BAKİYE ,M.CARHARDOVKOD, (SELECT SUM(CASE WHEN CARHARGCFLAG=1 THEN CARHARDOVTUTAR ELSE 0 END ) FROM " & vt.Text & ".dbo.CARHAR WHERE CARHAR.CARHARTAR=" & _
"M.CARHARTAR AND CARHAR.CARHARREFNO=M.CARHARREFNO AND CARHARCARKOD=M.CARHARCARKOD AND CARHARSIRANO=M.CARHARSIRANO AND CARHARISTIPNO =M.CARHARISTIPNO) AS DOVBORÇ, (SELECT SUM(CASE WHEN CARHARGCFLAG=" & _
"2 THEN CARHARDOVTUTAR ELSE 0 END ) FROM " & vt.Text & ".dbo.CARHAR WHERE CARHAR.CARHARTAR=M.CARHARTAR AND CARHAR.CARHARREFNO=M.CARHARREFNO AND CARHARCARKOD=M.CARHARCARKOD AND CARHARSIRANO=" & _
"M.CARHARSIRANO AND CARHARISTIPNO =M.CARHARISTIPNO) AS DOVALACAK ,(SELECT SUM(CASE WHEN CARHARGCFLAG=1 THEN CARHARDOVTUTAR ELSE 0 END -CASE WHEN CARHARGCFLAG=2 THEN CARHARDOVTUTAR ELSE 0 END ) FROM " & vt.Text & ".dbo.CARHAR WHERE (CARHAR.CARHARTAR<M.CARHARTAR OR (CARHAR.CARHARTAR=M.CARHARTAR AND CARHAR.CARHARREFNO<=M.CARHARREFNO AND CARHAR.CARHARSIRANO<=M.CARHARSIRANO)) AND CARHARCARKOD=M.CARHARCARKOD) AS DOVBAKİYE FROM " & vt.Text & ".dbo.CARHAR AS M WHERE M.CARHARCARKOD = '" & ara.Text & "' ORDER BY M.CARHARTAR, M.CARHARSIRANO ASC", , adCmdText)BO KOD ÇALIŞYOR AMA GERİYE DÖNÜK AYNI TARİHE VERİ GİRİNCE ÇALIŞMIYOR. İŞİN ASLI BU
Erdal KOÇ
-
-
Uzgunum, MSDN forumlarinda sorunlar var ve sanirim duzeltmeye niyetleri de yok. Bir daha buralara ugramayabilirim.
Kodun okuyup anlamasi kolay bir kod degil, elimde ornek set olmadan bakmasi cok zor. Baksam da bir daha bu mesaji bulabilecegimden ya da senin okuyabileceginden bile emin degilim artik.