SQL server da yürüyen bakiye cari extre ve vadesi dolan tutar

mustafakoker

MUSTAFA KÖKER
Altın Üye
Katılım
20 Haziran 2008
Mesajlar
697
Excel Vers. ve Dili
Microsoft Office ev ve iş 2019
Arkadaşlar merhaba;
Chat GPT' ye revize ettirdiğim SQL sorgumu örnek olması fikir vermesi açısından sizinle paylaşmak istedim. Bu sorguda ilgili tablolardan borç-alacağı çekip (Borç-ALacak) şeklinde yürüyen bakiye oluşturuyor. Ayrıca fatura valör tarihine göre vadesi geçen günü, Vadesi geçen tutarı (gün büyükse sıfırdan) vadesi dolmamış tutarı (gün küçükse sıfırdan) ayrı kolonlara yazmaktadır. ekte ekran çıktısı resim olarak da ekledim.
Ben sorguyu excele bağladım A1 fşrma koduna göre sorgu oto çalışmakta. Fikir vermesi açısından güzel bir proje oldu lazım olan arkadaşlar kodu aşağıda paylaşıyorum yararlanabilirler.

WITH CTE AS (
SELECT
KOD ,
TARIH AS [FATURA TARİHİ],
ACIKLAMA,
VALORTARIH AS [VALORTARIH],
BORCFIYAT AS [BORCFIYAT],
ALACAKFIYAT AS [ALACAKFIYAT],
SUM(BORCFIYAT - ALACAKFIYAT) OVER (ORDER BY TARIH) AS YuruyenBakiye,
DATEDIFF(DAY, VALORTARIH, GETDATE()) AS GecenGun
FROM CARI10T
WHERE KOD LIKE '%A-01-290%'
)
SELECT
KOD AS [Cari Kodu],
[FATURA TARİHİ] AS [Fat.Tarihi],
ACIKLAMA AS [Açıklama],
[VALORTARIH] AS [Vade Tarihi],
[BORCFIYAT] AS [Borç],
[ALACAKFIYAT] AS [Alacak],
YuruyenBakiye AS [Bakiye],
GecenGun AS [V.Geçen Gün],
CASE WHEN GecenGun > 0 THEN YuruyenBakiye ELSE 0 END AS [Vadesi Geçen Tutar],
CASE WHEN GecenGun < 0 THEN YuruyenBakiye ELSE 0 END AS [Vadesi Dolmamış Tutar]
FROM CTE
UNION ALL
SELECT
'Toplam Borç' AS [Cari Kodu],
NULL AS [Fat.Tarihi],
NULL AS [Açıklama],
NULL AS [Vade Tarihi],
COALESCE(SUM(BORCFIYAT), 0) AS [Borç],
NULL AS [Alacak],
NULL AS [Bakiye],
NULL AS [V.Geçen Gün],
NULL AS [Vadesi Geçen Tutar],
NULL AS [Vadesi Dolmamış Tutar]
FROM CTE
UNION ALL
SELECT
'Toplam Alacak' AS [Cari Kodu],
NULL AS [Fat.Tarihi],
NULL AS [Açıklama],
NULL AS [Vade Tarihi],
NULL AS [Borç],
COALESCE(SUM(ALACAKFIYAT), 0) AS [Alacak],
NULL AS [Bakiye],
NULL AS [V.Geçen Gün],
NULL AS [Vadesi Geçen Tutar],
NULL AS [Vadesi Dolmamış Tutar]
FROM CTE
UNION ALL
SELECT
'Kalan Bakiye' AS [Cari Kodu],
NULL AS [Fat.Tarihi],
NULL AS [Açıklama],
NULL AS [Vade Tarihi],
COALESCE(SUM(BORCFIYAT - ALACAKFIYAT), 0) AS [Borç],
NULL AS [Alacak],
NULL AS [Bakiye],
NULL AS [V.Geçen Gün],
NULL AS [Vadesi Geçen Tutar],
NULL AS [Vadesi Dolmamış Tutar]
FROM CTE
ORDER BY [Fat.Tarihi] ASC, [Cari Kodu]
 

mustafakoker

MUSTAFA KÖKER
Altın Üye
Katılım
20 Haziran 2008
Mesajlar
697
Excel Vers. ve Dili
Microsoft Office ev ve iş 2019
Kodun yürüyen bakiye kısmında toplu cari extrelerde hata vardı onu düzelttim aşağıdaki son halidir.


ALTER VIEW [dbo].[CARI_EKSTRE_53]
AS


WITH CTE AS (
SELECT
KOD ,
TARIH AS [FATURA TARİHİ],
ACIKLAMA,
VALORTARIH AS [VALORTARIH],
BORCFIYAT AS [BORCFIYAT],
ALACAKFIYAT AS [ALACAKFIYAT],
SUM(BORCFIYAT - ALACAKFIYAT)
-- OVER (PARTITION BY KOD)AS YuruyenBakiye, --OVER (ORDER BY TARIH) AS YuruyenBakiye,

OVER (PARTITION BY KOD
ORDER BY TARIH
ROWS BETWEEN
UNBOUNDED PRECEDING AND
CURRENT ROW) AS YuruyenBakiye,

DATEDIFF(DAY, VALORTARIH, GETDATE()) AS GecenGun
FROM CARI10T
-- WHERE KOD LIKE '%A-01-290%'
)
SELECT
KOD AS [Cari Kodu],
[FATURA TARİHİ] AS [Fat.Tarihi],
ACIKLAMA AS [Açıklama],
[VALORTARIH] AS [Vade Tarihi],
[BORCFIYAT] AS [Borç],
[ALACAKFIYAT] AS [Alacak],
YuruyenBakiye AS [Bakiye],
GecenGun AS [V.Geçen Gün],
CASE WHEN GecenGun > 0 THEN YuruyenBakiye ELSE 0 END AS [Vadesi Geçen Tutar],
CASE WHEN GecenGun < 0 THEN YuruyenBakiye ELSE 0 END AS [Vadesi Dolmamış Tutar]
FROM CTE
UNION ALL
SELECT
'Borç Toplamı:' AS [Cari Kodu],
NULL AS [Fat.Tarihi],
NULL AS [Açıklama],
NULL AS [Vade Tarihi],
COALESCE(SUM(BORCFIYAT), 0) AS [Borç],
NULL AS [Alacak],
NULL AS [Bakiye],
NULL AS [V.Geçen Gün],
NULL AS [Vadesi Geçen Tutar],
NULL AS [Vadesi Dolmamış Tutar]
FROM CTE
UNION ALL
SELECT
'Alacak Toplamı:' AS [Cari Kodu],
NULL AS [Fat.Tarihi],
NULL AS [Açıklama],
NULL AS [Vade Tarihi],
NULL AS [Borç],
COALESCE(SUM(ALACAKFIYAT), 0) AS [Alacak],
NULL AS [Bakiye],
NULL AS [V.Geçen Gün],
NULL AS [Vadesi Geçen Tutar],
NULL AS [Vadesi Dolmamış Tutar]
FROM CTE
UNION ALL
SELECT
'Kalan Bakiye:' AS [Cari Kodu],
NULL AS [Fat.Tarihi],
NULL AS [Açıklama],
NULL AS [Vade Tarihi],
COALESCE(SUM(BORCFIYAT - ALACAKFIYAT), 0) AS [Borç],
NULL AS [Alacak],
NULL AS [Bakiye],
NULL AS [V.Geçen Gün],
NULL AS [Vadesi Geçen Tutar],
NULL AS [Vadesi Dolmamış Tutar]
FROM CTE
--ORDER BY [Cari Kodu], [Fat.Tarihi] ASC


GO
 
Üst