• Merhaba Ziyaretçi,
    Microsoft 365 Uygulamaları ile ilgili yeni haberler, dikkat çekici konular, ilgi ile takip edeceğiniz yazılar için.

    Abone Olun
  • ESTE - Microsoft Office Eğitimleri

    Yeni yıl Microsoft Office Eğitim planlarınız için bütçenizi oluşturmadan önce ESTE eğitim kalitesi ile tanışın. 🙌
    Kullanıcıların ihtiyacı olan yazılı materyal, dosya ve video kaynağı desteğimiz ile tüm ofis çalışanlarının iş süreçlerini rahatlatacak eğitimler planlayın. 🎯
    Microsoft Office eğitimlerimiz hakkında detaylı bilgi için bize ulaşın.

    👉 Microsoft Office Eğitim Talebi

SQL Sorgu Cari Hesaplarda Yürüyen Bakiye

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
288
En iyi yanıt
4
Puanları
63
Yaş
33
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Office Vers.
2019
Selamlar,

Cari hesaplardan yürüyen bakiye için örnek sorgu paylaşıyorum. SQL'de Kullanıcı tanımlı fonksiyon ile başka raporlar yapabilirsiniz.

[HIDEREPLYTHANKS]
SQL:
CREATE  FUNCTION [dbo].[Carı_Bakıye_006] (@TARIH1 VARCHAR(12), @TARIH2 VARCHAR(12), @KODU VARCHAR(30))
RETURNS @Report TABLE
(
ID INT NOT NULL PRIMARY KEY,
ADI VARCHAR(30) COLLATE TURKISH_CI_AS,
KODU VARCHAR(30) COLLATE TURKISH_CI_AS,
FISTUR VARCHAR(150),
TARIH  VARCHAR(12) ,
BELGE  VARCHAR(150),
ACIKLAMA VARCHAR(150),
BORC  FLOAT,
ALACAK  FLOAT,
BAKIYE FLOAT,
BA  VARCHAR(4)
)
AS
BEGIN

DECLARE @COUNTER INT
DECLARE @ID INT
DECLARE @TARIH  VARCHAR(12)
DECLARE @BORC  FLOAT
DECLARE @ALACAK  FLOAT
DECLARE @BAKIYE FLOAT
DECLARE @FISTUR VARCHAR(150)
DECLARE @ADI VARCHAR(150)
DECLARE @BELGE VARCHAR(150)
DECLARE @ACIKLAMA VARCHAR(150)
DECLARE @BA VARCHAR(4)
SET @ID = 0
SET @BAKIYE = 0
SET @TARIH1 = CONVERT(DATETIME,@TARIH1,104)
SET @TARIH2 = CONVERT(DATETIME,@TARIH2,104)



DECLARE curCARI
CURSOR LOCAL FAST_FORWARD FOR


SELECT '','','','','Devir','',SUM(CASE WHEN SIGN=0 THEN AMOUNT ELSE 0 END) ,SUM(CASE WHEN SIGN=1 THEN AMOUNT ELSE 0 END),''
FROM LG_006_01_CLFLINE AS HAREKET LEFT OUTER JOIN LG_006_CLCARD AS KART ON HAREKET.CLIENTREF=KART.LOGICALREF
where HAREKET.CANCELLED=0 AND HAREKET.PAIDINCASH=0 AND KART.CODE=@KODU  AND HAREKET.DATE_< @TARIH1
GROUP BY KART.CODE

UNION all


SELECT
KART.DEFINITION_ ADI ,
KART.CODE KODU,
FISTUR=case WHEN HAREKET.TRCODE=1 THEN 'Nakit Tahsilat'
WHEN HAREKET.TRCODE=2 THEN 'Nakit Ödeme'
WHEN HAREKET.TRCODE=3 THEN 'Borç Dekontu'
WHEN HAREKET.TRCODE=4 THEN 'Alacak Dekontu'
WHEN HAREKET.TRCODE=5 THEN 'Virman İşlemi'
WHEN HAREKET.TRCODE=6 THEN 'Kur Farkı İşlemi'
WHEN HAREKET.TRCODE=12 THEN 'Özel İşlem'
WHEN HAREKET.TRCODE=14 THEN 'Açılış Fişi'
WHEN HAREKET.TRCODE=20 THEN 'Gelen Havaleler'
WHEN HAREKET.TRCODE=21 THEN 'Gönderilen Havaleler'
WHEN HAREKET.TRCODE=31 THEN 'Mal Alım Faturası'
WHEN HAREKET.TRCODE=32 THEN 'Perakende Satış İade Faturası'
WHEN HAREKET.TRCODE=33 THEN 'Toptan Satış İade Faturası'
WHEN HAREKET.TRCODE=34 THEN 'Alınan Hizmet Faturası'
WHEN HAREKET.TRCODE=35 THEN 'Alınan Proforma Faturası'
WHEN HAREKET.TRCODE=36 THEN 'Alım İade Faturası'
WHEN HAREKET.TRCODE=37 THEN 'Perakende Satış Faturası'
WHEN HAREKET.TRCODE=38 THEN 'Toptan Satış Faturası'
WHEN HAREKET.TRCODE=39 THEN 'Verilen Hizmet Faturası'
WHEN HAREKET.TRCODE=40 THEN 'Verilen Proforma Faturası'
WHEN HAREKET.TRCODE=41 THEN 'Verilen Vade Farkı Faturası'
WHEN HAREKET.TRCODE=42 THEN 'Alınan Vade Farkı Faturası'
WHEN HAREKET.TRCODE=43 THEN 'Alınan Fiyat Farkı Faturası'
WHEN HAREKET.TRCODE=44 THEN 'Verilen Fiyat Farkı Faturası'
WHEN HAREKET.TRCODE=45 THEN 'Verilen Serbest Meslek Makbuzu'
WHEN HAREKET.TRCODE=46 THEN 'Alınan Serbest Meslek Makbuzu'
WHEN HAREKET.TRCODE=56 THEN 'Müstahsil Makbuzu'
WHEN HAREKET.TRCODE=70 THEN 'Kredi Kartı Fişi'
WHEN HAREKET.TRCODE=71 THEN 'Kredi Kartı Fişi İade'
WHEN HAREKET.TRCODE=72 THEN 'Firma Kredi Kartı Fişi'
WHEN HAREKET.TRCODE=73 THEN 'Firma Kredi Kartı Fişi İade'
WHEN HAREKET.TRCODE=61 THEN 'Çek Girişi'
WHEN HAREKET.TRCODE=62 THEN 'Senet Girişi'
WHEN HAREKET.TRCODE=63 THEN 'Çek Çıkış Cari Hesaba'
WHEN HAREKET.TRCODE=64 THEN 'Senet Çıkış Cari Hesaba'
WHEN HAREKET.TRCODE=75 THEN 'Özel Dekont'
end,
CONVERT(VARCHAR(12),HAREKET.DATE_,104) TARIH,
HAREKET.DOCODE BELGE,
HAREKET.LINEEXP ACIKLAMA,
CASE WHEN SIGN=0 THEN AMOUNT ELSE 0 END  BORC,
CASE WHEN SIGN=1 THEN AMOUNT ELSE 0 END  ALACAK,''


FROM LG_006_01_CLFLINE AS HAREKET LEFT OUTER JOIN  LG_006_CLCARD AS KART ON HAREKET.CLIENTREF=KART.LOGICALREF
where HAREKET.CANCELLED=0 AND HAREKET.PAIDINCASH=0 AND KART.CODE=@KODU  AND CONVERT(DATETIME,HAREKET.DATE_,104)>= @TARIH1 AND CONVERT(DATETIME,HAREKET.DATE_,104)<= @TARIH2

OPEN curCARI
FETCH NEXT FROM curCARI
INTO @ADI,@KODU,@BELGE,@ACIKLAMA,@FISTUR, @TARIH, @BORC, @ALACAK,@BA
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ID = @ID + 1
SET @BAKIYE = round(@BAKIYE + @BORC - @ALACAK ,2)
SET @BA = CASE WHEN round(@BAKIYE ,2)>0 THEN '(B)' ELSE '(A)' END

INSERT @Report
VALUES (@ID, @ADI,@KODU,@BELGE,@ACIKLAMA,@FISTUR, @TARIH,  @BORC, @ALACAK, @BAKIYE,@BA)
FETCH NEXT FROM curCARI

INTO  @ADI,@KODU,@BELGE,@ACIKLAMA,@FISTUR, @TARIH, @BORC, @ALACAK,@BA

END
CLOSE curCARI
DEALLOCATE curCARI
RETURN
END

Kullanım;

SQL:
SELECT * FROM [dbo].[Carı_Bakıye_006] ('01.04.2016','31.12.2020','120.07.008') ORDER BY KODU
[/HIDEREPLYTHANKS]
 
Moderatör tarafında düzenlendi:

Murat OSMA

Yönetici
Site Yöneticisi
Katılım
25 May 2018
Mesajlar
1,504
En iyi yanıt
13
Puanları
113
Konum
İstanbul
Web sitesi
excelarsivi.com
Ad Soyad
Murat OSMA
Office Vers.
Office 365 TR+EN
Vedat Bey kıymetli paylaşımınız için teşekkür ediyorum.
Ellerinize, zihninize sağlık. (y)
 

assenucler

Yeni Üye
Katılım
19 Haz 2018
Mesajlar
87
En iyi yanıt
0
Puanları
18
Yaş
78
Konum
Emekli YMM
Ad Soyad
A. Selim Şenüçler
Office Vers.
Office 365 ev 64 bit
Emek ve paylaşımınız için teşekkürler.
 

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
288
En iyi yanıt
4
Puanları
63
Yaş
33
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Office Vers.
2019
İnşAllah yakında Sql'de Yürüyen bakiye ile ilgili farklı çözümler içeren sorgular paylaşa'cam.
 
  • Beğendim
Tepkiler: Btr

assenucler

Yeni Üye
Katılım
19 Haz 2018
Mesajlar
87
En iyi yanıt
0
Puanları
18
Yaş
78
Konum
Emekli YMM
Ad Soyad
A. Selim Şenüçler
Office Vers.
Office 365 ev 64 bit
Sayın Vedat Özer,

Sanırım, verdiğiniz kodlar Logo yazılımı sorgularında kullanılıyor değil mi?
 

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
288
En iyi yanıt
4
Puanları
63
Yaş
33
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Office Vers.
2019
Merhaba,

Logo Cari hesap ekstresinde kullanılıyor. Yukarıdaki çözüm özel çözümdür.
 

yilmaz3838

Yeni Üye
Katılım
16 Kas 2018
Mesajlar
14
En iyi yanıt
0
Puanları
3
Yaş
35
Konum
Kayseri
Ad Soyad
Yılmaz Seyran
Merhaba öncelikle emekleriniz için çok Teşekkürler ederim. Fakat şöyle bir sorunla karşılaştım 120.01.001 yada YILMAZ yada 120.01.025 bunları yazdığımda sorun yok fakat 120.01.003 yazdığımda;
String or binary data would be truncated.
The statement has been terminated.
Hatayı alıyorum. Bu konuyla ilgili yardımcı olur musunuz?
 

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
288
En iyi yanıt
4
Puanları
63
Yaş
33
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Office Vers.
2019
Merhaba,

Aşağıdaki alanların karakter sınırını değiştirip deneyin.

ADI VARCHAR(300) COLLATE TURKISH_CI_AS,
KODU VARCHAR(300) COLLATE TURKISH_CI_AS,
 

sfatihs

Yeni Üye
Katılım
27 Kas 2018
Mesajlar
11
En iyi yanıt
0
Puanları
1
Yaş
31
Konum
İzmir
Ad Soyad
Kenan ÖZ
Merhabalar, Siteniz çok güzel gerçekten, Logo ile ilgili paylaşımlarınız için çok teşekkür ederim,

Fonksiyonu oldugu gibi kullandıgım zaman ;

Msg 207, Level 16, State 1, Procedure xxx, Line 43 [Batch Start Line 0]
Invalid column name 'PAIDINCASH'.
Msg 207, Level 16, State 1, Procedure xxx, Line 97 [Batch Start Line 0]
Invalid column name 'PAIDINCASH'.


bu hatayı alıyorum tabloda PAIDINCASH ın 0 oldugu değer yok acaba ondanmı?

(where HAREKET.CANCELLED=0 AND HAREKET.PAIDINCASH=0) burdaki amacı öğrenebilirmiyim rica etsem logo veri tababına tam hakim değilimde. Mikroda iyiyim ama :)


PAIDINCASH ı fonksiyondan kaldırdıgım zaman fonksiyon kaydoluyor ama sorgulamada ise şöyle bir hata geliyor ;


Msg 8152, Level 16, State 14, Line 1
String or binary data would be truncated.
The statement has been terminated.

Logo GO kullanıyoruz ver. 2.5
 

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
288
En iyi yanıt
4
Puanları
63
Yaş
33
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Office Vers.
2019
Merhaba,

PAIDINCASH alanı peşin ödemelerde 0 ile 1 değerini alır. Go versiyonu eski bir versiyondur bundan yok sanırım. Diğer bahsettiğiniz hata cursor'dan dönem sonuçların ilgili tabloya yazılırken veri alanının eklenen verinin alanından kısa olmasıdır. Bunun için Cari Kodu,Cari Adı gibi Varchar olanların sayısını yükseltin.
 

sfatihs

Yeni Üye
Katılım
27 Kas 2018
Mesajlar
11
En iyi yanıt
0
Puanları
1
Yaş
31
Konum
İzmir
Ad Soyad
Kenan ÖZ
Merhaba,

Dediğiniz gibi yaptım şuan düzeldi, Teşekkürler,

Tarih sıralamasına göre sonuç almak istiyorum ama olmuyor bi öneriniz varmı? Tarih değilde sanki bir sayı gibi sıralıyor günü baz alıyor sadece.
 

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
288
En iyi yanıt
4
Puanları
63
Yaş
33
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Office Vers.
2019
Merhaba,

Kodu aşağıdaki şekilde düzelttim.

SQL:
---SELECT * FROM  [dbo].[Carı_Bakıye_006] ('01.01.2018','31.12.2018','120.07.008')

ALTER  FUNCTION [dbo].[Carı_Bakıye_006] (@TARIH1 VARCHAR(12), @TARIH2 VARCHAR(12), @KODU VARCHAR(30))
RETURNS @Report TABLE
(
ID INT NOT NULL PRIMARY KEY,
ADI VARCHAR(300) COLLATE TURKISH_CI_AS,
KODU VARCHAR(300) COLLATE TURKISH_CI_AS,
FISTUR VARCHAR(150),
TARIH  DATETIME ,
BELGE  VARCHAR(150),
ACIKLAMA VARCHAR(150),
BORC  FLOAT,
ALACAK  FLOAT,
BAKIYE FLOAT,
BA  VARCHAR(4)
)
AS
BEGIN

DECLARE @COUNTER INT
DECLARE @ID INT
DECLARE @TARIH  VARCHAR(12)
DECLARE @BORC  FLOAT
DECLARE @ALACAK  FLOAT
DECLARE @BAKIYE FLOAT
DECLARE @FISTUR VARCHAR(150)
DECLARE @ADI VARCHAR(150)
DECLARE @BELGE VARCHAR(150)
DECLARE @ACIKLAMA VARCHAR(150)
DECLARE @BA VARCHAR(4)
SET @ID = 0
SET @BAKIYE = 0
SET @TARIH1 = CONVERT(DATETIME,@TARIH1,104)
SET @TARIH2 = CONVERT(DATETIME,@TARIH2,104)



DECLARE curCARI
CURSOR LOCAL FAST_FORWARD FOR



SELECT * FROM (
SELECT '' ADI,'' KODU,'' FISTUR,NULL TARIH,'Devir' BELGE,'' ACIKLAMA,SUM(CASE WHEN SIGN=0 THEN AMOUNT ELSE 0 END) BORC,SUM(CASE WHEN SIGN=1 THEN AMOUNT ELSE 0 END)ALACAK,'' BA
FROM LG_006_01_CLFLINE AS HAREKET LEFT OUTER JOIN LG_006_CLCARD AS KART ON HAREKET.CLIENTREF=KART.LOGICALREF
where HAREKET.CANCELLED=0 AND HAREKET.PAIDINCASH=0 AND KART.CODE=@KODU  AND HAREKET.DATE_< @TARIH1
GROUP BY KART.CODE
UNION all
SELECT
KART.DEFINITION_ ADI ,
KART.CODE KODU,
FISTUR=case WHEN HAREKET.TRCODE=1 THEN 'Nakit Tahsilat'
WHEN HAREKET.TRCODE=2 THEN 'Nakit Ödeme'
WHEN HAREKET.TRCODE=3 THEN 'Borç Dekontu'
WHEN HAREKET.TRCODE=4 THEN 'Alacak Dekontu'
WHEN HAREKET.TRCODE=5 THEN 'Virman İşlemi'
WHEN HAREKET.TRCODE=6 THEN 'Kur Farkı İşlemi'
WHEN HAREKET.TRCODE=12 THEN 'Özel İşlem'
WHEN HAREKET.TRCODE=14 THEN 'Açılış Fişi'
WHEN HAREKET.TRCODE=20 THEN 'Gelen Havaleler'
WHEN HAREKET.TRCODE=21 THEN 'Gönderilen Havaleler'
WHEN HAREKET.TRCODE=31 THEN 'Mal Alım Faturası'
WHEN HAREKET.TRCODE=32 THEN 'Perakende Satış İade Faturası'
WHEN HAREKET.TRCODE=33 THEN 'Toptan Satış İade Faturası'
WHEN HAREKET.TRCODE=34 THEN 'Alınan Hizmet Faturası'
WHEN HAREKET.TRCODE=35 THEN 'Alınan Proforma Faturası'
WHEN HAREKET.TRCODE=36 THEN 'Alım İade Faturası'
WHEN HAREKET.TRCODE=37 THEN 'Perakende Satış Faturası'
WHEN HAREKET.TRCODE=38 THEN 'Toptan Satış Faturası'
WHEN HAREKET.TRCODE=39 THEN 'Verilen Hizmet Faturası'
WHEN HAREKET.TRCODE=40 THEN 'Verilen Proforma Faturası'
WHEN HAREKET.TRCODE=41 THEN 'Verilen Vade Farkı Faturası'
WHEN HAREKET.TRCODE=42 THEN 'Alınan Vade Farkı Faturası'
WHEN HAREKET.TRCODE=43 THEN 'Alınan Fiyat Farkı Faturası'
WHEN HAREKET.TRCODE=44 THEN 'Verilen Fiyat Farkı Faturası'
WHEN HAREKET.TRCODE=45 THEN 'Verilen Serbest Meslek Makbuzu'
WHEN HAREKET.TRCODE=46 THEN 'Alınan Serbest Meslek Makbuzu'
WHEN HAREKET.TRCODE=56 THEN 'Müstahsil Makbuzu'
WHEN HAREKET.TRCODE=70 THEN 'Kredi Kartı Fişi'
WHEN HAREKET.TRCODE=71 THEN 'Kredi Kartı Fişi İade'
WHEN HAREKET.TRCODE=72 THEN 'Firma Kredi Kartı Fişi'
WHEN HAREKET.TRCODE=73 THEN 'Firma Kredi Kartı Fişi İade'
WHEN HAREKET.TRCODE=61 THEN 'Çek Girişi'
WHEN HAREKET.TRCODE=62 THEN 'Senet Girişi'
WHEN HAREKET.TRCODE=63 THEN 'Çek Çıkış Cari Hesaba'
WHEN HAREKET.TRCODE=64 THEN 'Senet Çıkış Cari Hesaba'
WHEN HAREKET.TRCODE=75 THEN 'Özel Dekont'
end,
HAREKET.DATE_ TARIH,
HAREKET.DOCODE BELGE,
HAREKET.LINEEXP ACIKLAMA,
CASE WHEN SIGN=0 THEN AMOUNT ELSE 0 END  BORC,
CASE WHEN SIGN=1 THEN AMOUNT ELSE 0 END  ALACAK,'' as ba
FROM LG_006_01_CLFLINE AS HAREKET LEFT OUTER JOIN  LG_006_CLCARD AS KART ON HAREKET.CLIENTREF=KART.LOGICALREF
where HAREKET.CANCELLED=0 AND HAREKET.PAIDINCASH=0 AND KART.CODE=@KODU  AND CONVERT(DATETIME,HAREKET.DATE_,104)>= @TARIH1 AND CONVERT(DATETIME,HAREKET.DATE_,104)<= @TARIH2
) AS TMP
ORDER BY TARIH

OPEN curCARI
FETCH NEXT FROM curCARI
INTO @ADI,@KODU,@BELGE,@ACIKLAMA,@FISTUR, @TARIH, @BORC, @ALACAK,@BA
WHILE @@FETCH_STATUS = 0
BEGIN
SET @ID = @ID + 1
SET @BAKIYE = round(@BAKIYE + @BORC - @ALACAK ,2)
SET @BA = CASE WHEN round(@BAKIYE ,2)>0 THEN '(B)' ELSE '(A)' END

INSERT @Report
VALUES (@ID, @ADI,@KODU,@BELGE,@ACIKLAMA,@FISTUR, @TARIH,  @BORC, @ALACAK, @BAKIYE,@BA)
FETCH NEXT FROM curCARI

INTO  @ADI,@KODU,@BELGE,@ACIKLAMA,@FISTUR, @TARIH, @BORC, @ALACAK,@BA

END
CLOSE curCARI
DEALLOCATE curCARI
RETURN
END
 

sfatihs

Yeni Üye
Katılım
27 Kas 2018
Mesajlar
11
En iyi yanıt
0
Puanları
1
Yaş
31
Konum
İzmir
Ad Soyad
Kenan ÖZ
İlginiz için teşekkürler, Tarih sıralama da düzeldi
 

Koboy66

Yeni Üye
Katılım
12 Ara 2018
Mesajlar
42
En iyi yanıt
0
Puanları
8
Yaş
43
Konum
İstanbul
Ad Soyad
Erkan uzun
Cari hesap bölümündeki gibi son bakiyeyi gösteren sorgu vedat beyin sorgusunu düzenledim.

Cari kodu ve tarihe gerek kalmadan


Kod:
SELECT * FROM [dbo].[Carı_Bakıye_006_Grublu] () ORDER BY KODU
Kod:
CREATE  FUNCTION [dbo].[Carı_Bakıye_006_Grublu] ()
RETURNS @Report TABLE
(
KODU VARCHAR(300) COLLATE TURKISH_CI_AS,
ADI VARCHAR(300) COLLATE TURKISH_CI_AS,


BORC  FLOAT,
ALACAK  FLOAT,
BAKIYE FLOAT,
BA  VARCHAR(4)
)
AS
BEGIN
DECLARE @COUNTER INT
DECLARE @BORC  FLOAT
DECLARE @ALACAK  FLOAT
DECLARE @BAKIYE FLOAT
DECLARE @KODU VARCHAR(150)
DECLARE @ADI VARCHAR(150)
DECLARE @BA VARCHAR(4)
SET @BAKIYE = 0

DECLARE curCARI
CURSOR LOCAL FAST_FORWARD FOR

SELECT
KART.CODE KODU,
KART.DEFINITION_ ADI ,


SUM(CASE WHEN SIGN=0 THEN AMOUNT ELSE 0 END)  BORC,
SUM(CASE WHEN SIGN=1 THEN AMOUNT ELSE 0 END)  ALACAK,
round(SUM(CASE WHEN SIGN=0 THEN AMOUNT ELSE 0 END)- SUM(CASE WHEN SIGN=1 THEN AMOUNT ELSE 0 END),2)  BAKIYE,'' as ba
FROM LG_006_01_CLFLINE AS HAREKET LEFT OUTER JOIN  LG_006_CLCARD AS KART ON HAREKET.CLIENTREF=KART.LOGICALREF
where HAREKET.CANCELLED=0 AND HAREKET.PAIDINCASH=0
GROUP BY KART.DEFINITION_,KART.CODE

ORDER BY ADI

OPEN curCARI
FETCH NEXT FROM curCARI
INTO @ADI, @KODU,  @BORC, @ALACAK, @BAKIYE,@BA
WHILE @@FETCH_STATUS = 0
BEGIN


SET @BA = CASE WHEN round(@BAKIYE ,2)>0 THEN '(B)' ELSE '(A)' END

INSERT @Report
VALUES ( @ADI, @KODU,  @BORC, @ALACAK, @BAKIYE,@BA)
FETCH NEXT FROM curCARI

INTO  @ADI,@KODU, @BORC, @ALACAK,@BAKIYE,@BA

END
CLOSE curCARI
DEALLOCATE curCARI
RETURN
END

GO
 

Ekli dosyalar

  • goruntu.png
    goruntu.png
    21.8 KB · Görüntüleme: 59

Vedat ÖZER

Logo Uzmanı
Geliştirici
Katılım
4 Haz 2018
Mesajlar
288
En iyi yanıt
4
Puanları
63
Yaş
33
Konum
Antalya / Merkez
Ad Soyad
Vedat ÖZER
Office Vers.
2019
Merhaba,

Bunun için Cursor kullanmaya hiç gerek yok direk normal sorgu ile çıkar , ki yürüyen bakiyede normal sorgu ilede çıkar bu yöntem biraz daha hızlıdır.

SQL:
SELECT *,CASE WHEN BAKIYE>0 THEN '(B)' WHEN BAKIYE<0 THEN '(A)' ELSE '-' END [B-A] FROM (
SELECT
KART.CODE KODU,
KART.DEFINITION_ ADI ,
SUM(CASE WHEN SIGN=0 THEN AMOUNT ELSE 0 END)  BORC,
SUM(CASE WHEN SIGN=1 THEN AMOUNT ELSE 0 END)  ALACAK,
round(SUM(CASE WHEN SIGN=0 THEN AMOUNT ELSE 0 END)- SUM(CASE WHEN SIGN=1 THEN AMOUNT ELSE 0 END),2)  BAKIYE
FROM LG_006_01_CLFLINE AS HAREKET LEFT OUTER JOIN  LG_006_CLCARD AS KART ON HAREKET.CLIENTREF=KART.LOGICALREF
where HAREKET.CANCELLED=0 AND HAREKET.PAIDINCASH=0
GROUP BY KART.DEFINITION_,KART.CODE)  AS TMP
ORDER BY KODU
 
Üst Alt