Forum

sql yürüy...
 
Bildirimler
Hepsini Temizle

sql yürüyen bakiye hakkında

6 Yazılar
1 Üyeler
0 Likes
4,181 Görüntüleme
(@LeventHorasan)
Gönderiler: 11
Active Member
Konu başlatıcı
 

Merhaba Arkadaşlar, şöyle bir tablom var,

Kodu Tarih Kasa Açıklaması Borç Alacak Bakiye
120.00196 18.03.2015 GELEN HAVALE  0,00 3.000,00 3.000,00
120.00307 09.12.2014 DEVİR 1.500,00 0,00 1.500,00
120.00307 08.01.2015 KARGODA MEYD.GELN. 0,00 1.500,00 3.000,00
120.00307 31.01.2015 FATURA 88,50 0,00 2.911,50
120.00307 06.03.2015 KAPORA KUVEYT TÜRK K... 0,00 600,00 3.511,50
120.00307 06.03.2015 FATURA 15.000,01 0,00 -11.488,51
120.00307 10.03.2015 GELEN HAVALE 0,00 2.400,00 -9.088,51
120.00349 09.12.2014 DEVİR 894,32 0,00 -9.982,83
120.00350 09.12.2014 DEVİR 5.523,60 0,00 -15.506,43
120.00481 09.12.2014 DEVİR 135,00 0,00 -15.641,43
120.00506 09.12.2014 DEVİR 621,00 0,00 -16.262,43
120.00506 13.01.2015 YKB-VAD.ÇEK GİRİŞİ 0,00 5.000,00 -11.262,43
120.00506 13.01.2015 YKB-VAD.ÇEK GİRİŞİ 0,00 5.000,00 -6.262,43
120.00506 14.01.2015 TAHSİLAT 0,00 500,00 -5.762,43

Kodunu filitrelediğim zaman yani bir firmayı seçtiğimde,
 
 
Kodu Tarih Kasa Açıklaması Borç Alacak Bakiye
120.00307 09.12.2014 DEVİR 1.500,00 0,00 1.500,00
120.00307 08.01.2015 KARGODA MEYD.GELN. 0,00 1.500,00 3.000,00
120.00307 31.01.2015 FATURA 88,50 0,00 2.911,50
120.00307 06.03.2015 KAPORA KUVEYT TÜRK
K...
0,00 600,00 3.511,50
120.00307 06.03.2015 FATURA 15.000,01 0,00 -11.488,51
120.00307 10.03.2015 GELEN HAVALE 0,00 2.400,00 -9.088,51

bakiye kısmını genel olarak gösteriyor. Ben bir firmayı seçtiğimde sadece o firmaya ait bakiye kısmını görmek istiyorum.

Sorgum şu şekilde acaba nerede yanlış yaptım. Şimdiden yardımlarınız için teşekkürler. Saygılarımla,

 WITH CTE AS(SELECT     [#msg_S_0200] AS Kodu, msg_S_0089 AS Tarih, [#msg_S_0093] AS [Belge No], msg_S_0094, msg_S_0003 AS Türü, msg_S_0115 AS [Cari/Hizmet Adı], [#msg_S_0085] AS [Kasa Açıklaması], 

                      msg_S_0113 AS [Karşı Car.Hes.Adı], [msg_S_0101\T] AS Borç, [msg_S_0102\T] AS Alacak, msg_S_0090, msg_S_0091

FROM         dbo.fn_CariFoy(N'0', 0, N'', NULL, '20121231', '20140101', '20201231', 0, N'') AS fn_CariFoy_1

GROUP BY [#msg_S_0200], msg_S_0089, [#msg_S_0093], msg_S_0003, msg_S_0115, [#msg_S_0085], msg_S_0113, [msg_S_0101\T], [msg_S_0102\T], msg_S_0094, msg_S_0090, 

                      msg_S_0091/* msg_S_0091*/ ), CTE2 AS

    (SELECT     Tarih, Kodu, [Belge No], msg_S_0094, Türü, [Cari/Hizmet Adı], [Kasa Açıklaması], [Karşı Car.Hes.Adı], Borç, Alacak, RN = ROW_NUMBER() OVER (ORDER BY Kodu, Tarih, msg_S_0094, 

                             msg_S_0090, msg_S_0091)

FROM         CTE)

    SELECT     Kodu, Tarih, [Kasa Açıklaması], Borç, Alacak, Bakiye =

                                (SELECT     SUM(ISNULL(Alacak, 0)) - SUM(ISNULL(Borç, 0))

                                  FROM          CTE2

                                  WHERE      RN <= t .RN)

     FROM         CTE2 t

 

 
Gönderildi : 19/03/2015 15:38

(@LeventHorasan)
Gönderiler: 11
Active Member
Konu başlatıcı
 

Merhaba

En alttaki Select kısmında borç ve alacak ı kaldırın sadece bakiye gelsin 

Merhaba Yavuz bey sizin dediğiniz şekilde yaptım ancak değişen sadece borç ve alacak kısmını göstermiyor. Bakiye kısmı yine aynı gösteriyor. Yani aslında anlatmak istediğim şu; yukarıdaki 1.tablom tüm carilerin kayıtlarını gösteriyor. Ben bir cariyi süzdüğümde borç ve alacak kısımları doğru görünüyor ama bakiye kısmında diğer kayıtları da toplayıp çıkardığı için doğru sonuç vermiyor örnek 2.tablo Yukarıdaki sorguya bakiye kısmını o seçtiğim cari ile ilişkili olması gerekiyor diye düşünüyorum ama nasıl? Teşekkürler.

 
Gönderildi : 19/03/2015 17:53

(@LeventHorasan)
Gönderiler: 11
Active Member
Konu başlatıcı
 

İlgili cari kodunu seçince, tüm bakiyeleri toplansın mı istiyorsunuz?

Evet ilgili carinin cari hareketlerini toplasın veya çıkarsın. Ama sadece ilgili carinin  

 
Gönderildi : 19/03/2015 18:04

(@LeventHorasan)
Gönderiler: 11
Active Member
Konu başlatıcı
 

O zaman sadece, kodu ve bakiye alanlarını alın, bakiyeyi, SUM(bakiye) olarak select içerisine yazın.

Kodu kısmınıda GROUP by a ekleyin, sadece tek satır cari kodu gelecek ve bakiyeyi toplayacaktır 

Teşekkür ederim. Örnek sorguyu yazabilir misiniz? Ben hata yapıyorum galiba olmuyor. Teşekkürler. Saygılarımla,

 
Gönderildi : 19/03/2015 20:43

(@LeventHorasan)
Gönderiler: 11
Active Member
Konu başlatıcı
 

O zaman sadece, kodu ve bakiye alanlarını alın, bakiyeyi, SUM(bakiye) olarak select içerisine yazın.

Kodu kısmınıda GROUP by a ekleyin, sadece tek satır cari kodu gelecek ve bakiyeyi toplayacaktır 

Teşekkür ederim. Örnek sorguyu yazabilir misiniz? Ben hata yapıyorum galiba olmuyor. Teşekkürler. Saygılarımla,

Teşekkür ederim.Farklı bir şekilde çözdüm. 

 
Gönderildi : 20/03/2015 00:43

(@LeventHorasan)
Gönderiler: 11
Active Member
Konu başlatıcı
 

O zaman sadece, kodu ve bakiye alanlarını alın, bakiyeyi, SUM(bakiye) olarak select içerisine yazın.

Kodu kısmınıda GROUP by a ekleyin, sadece tek satır cari kodu gelecek ve bakiyeyi toplayacaktır 

Teşekkür ederim. Örnek sorguyu yazabilir misiniz? Ben hata yapıyorum galiba olmuyor. Teşekkürler. Saygılarımla,

Teşekkür ederim.Farklı bir şekilde çözdüm. 

 Levent bey nasıl çözdünüz, geri dönüş yaparsanız belki ihtiyacı olan arkadaşlar için örnek olmuş olur 

 Çözülmüş halinin sorgusu ayrıca bu sorguda farklı alanlarda var 

 SELECT     TOP (100) PERCENT fn_CariFoy_1.[#msg_S_0200] AS No, fn_CariFoy_1.[#msg_S_0201] AS FirmaAdı, fn_CariFoy_1.msg_S_0089 AS İşlemTarihi, 

                      fn_CariFoy_1.[#msg_S_0092] AS [Tarih Vade], dbo.CARI_HAREKET_ODEME_VADELERI.cop_vade AS [Tarih Finans], fn_CariFoy_1.[#msg_S_0085] AS Açıklama, 

                      fn_CariFoy_1.msg_S_0112 AS Döviz, fn_CariFoy_1.[msg_S_0101\T] AS YTLBorç, fn_CariFoy_1.[msg_S_0102\T] AS YTLAlacak, 

                      CAST(fn_CariFoy_1.[#msg_S_0092] - dbo.CARI_HAREKET_ODEME_VADELERI.cop_vade AS FLOAT) AS FinGün, 

                      dbo.CARI_HESAPLAR.cari_vade_fark_yuz AS [Finans %], fn_CariFoy_1.msg_S_0088 AS Id

FROM         dbo.fn_CariFoy(N'0', 0, N'', NULL, '20141231', '20150101', '20151231', 0, N'') AS fn_CariFoy_1 LEFT OUTER JOIN

                      dbo.CARI_HESAPLAR ON fn_CariFoy_1.[#msg_S_0200] = dbo.CARI_HESAPLAR.cari_kod LEFT OUTER JOIN

                      dbo.CARI_HAREKET_ODEME_VADELERI ON fn_CariFoy_1.[msg_S_0101\T] = dbo.CARI_HAREKET_ODEME_VADELERI.cop_tutar

ORDER BY Id, No

 
Gönderildi : 20/03/2015 18:40

Paylaş: