Elimde aşağıdaki gibi bir tablo var.
CARI| TARIH | BORC | ALACAK
---------------------------------------------
A | 02.02.2020 | 10,00 | 0,00
A | 03.02.2020 | 20,00 | 0,00
A | 04.02.2020 | 0,00 | 30,00
A | 05.02.2020 | 20,00 | 0,00
A | 06.02.2020 | 40,00 | 0,00
A | 07.02.2020 | 50,00 | 0,00
A | 08.02.2020 | 15,00 | 0,00
A | 09.02.2020 | 20,00 | 0,00
A | 10.02.2020 | 10,00 | 0,00
A | 11.02.2020 | 20,00 | 0,00
A | 12.02.2020 | 0,00 | 50,00
A | 13.02.2020 | 0,00 | 60,00
A | 14.02.2020 | 20,00 | 15,00
Bu tabloyla bir view oluşturmak istiyorum. İlk Olarak ALACAK'ın tamamı CARİ baz alınarak toplanacak. Sonra toplam ALACAK'tan tarihe göre ilk BORÇ düşülecek ve bunu ilk tarihteki BAKİYE kolonuna yazacak. Daha sonra bu tutardan sırayla diğer BORÇ kolonlarını tek tek düşecek ve mevcut tarihlerine ait kolonlara yazacak.
Elde etmek istediğim view aşağıdaki gibidir.
CARI| TARIH | BORC | ALACAK | BAKIYE | TOPLAM_ALACAK
-------------------------------------------------------------------------
A | 02.02.2020 | 10,00 | 0,00 | 145,00 | 155,00
A | 03.02.2020 | 20,00 | 0,00 | 125,00 |
A | 04.02.2020 | 0,00 | 30,00 | 125,00 |
A | 05.02.2020 | 20,00 | 0,00 | 105,00 |
A | 06.02.2020 | 40,00 | 0,00 | 65,00 |
A | 07.02.2020 | 50,00 | 0,00 | 15,00 |
A | 08.02.2020 | 15,00 | 0,00 | 00,00 |
A | 09.02.2020 | 20,00 | 0,00 | -20,00 |
A | 10.02.2020 | 10,00 | 0,00 | -30,00 |
A | 11.02.2020 | 20,00 | 0,00 | -50,00 |
A | 12.02.2020 | 0,00 | 50,00 | -50,00 |
A | 13.02.2020 | 0,00 | 60,00 | -50,00 |
A | 14.02.2020 | 20,00 | 15,00 | -70,00 |
Bu işlemi ASP.NET MVC de aşağıdaki gibi yapabiliyorum:
var alacakToplam = Model.Sum(x => x.ALACAK);
foreach (var item in Model.OrderBy(x => x.TARIH))
{
<tr>
<td>@item.CARI</td>
<td>@item.TARIH</td>
<td>@item.BORC</td>
<td>@item.ALACAK</td>
<td>@alacakToplam- item.BORC</td>
</tr>
alacakToplam= alacakToplam- item.BORC;
}
Ancak bunu View ile yapabilirsem çok daha iyi olacak.
Oluşturduğum view kodlarını ve oluşan view i aşağıya yazıyorum:
SELECT
CH.CARI,
CH.TARIH,
CH.BORC,
CH.ALACAK,
(sum(CH.ALACAK) over (partition by CH.CARI) -
sum(debit) over (partition by CH.CARI)
) as BAKIYE,
(case when row_number() over (partition by CH.CARI order by date) = 1
then sum(ALACAK) over (partition by CH.CARI)
end) as ALACAK_TOPLAM
FROM
CARIHAREKETLER CH
Oluşan View:
CARI| TARIH | BORC | ALACAK | BAKIYE | TOPLAM_ALACAK
-------------------------------------------------------------------------
A | 02.02.2020 | 10,00 | 0,00 | -70,00 | 155,00
A | 03.02.2020 | 20,00 | 0,00 | -70,00 |
A | 04.02.2020 | 0,00 | 30,00 | -70,00 |
A | 05.02.2020 | 20,00 | 0,00 | -70,00 |
A | 06.02.2020 | 40,00 | 0,00 | -70,00 |
A | 07.02.2020 | 50,00 | 0,00 | -70,00 |
A | 08.02.2020 | 15,00 | 0,00 | -70,00 |
A | 09.02.2020 | 20,00 | 0,00 | -70,00 |
A | 10.02.2020 | 10,00 | 0,00 | -70,00 |
A | 11.02.2020 | 20,00 | 0,00 | -70,00 |
A | 12.02.2020 | 0,00 | 50,00 | -70,00 |
A | 13.02.2020 | 0,00 | 60,00 | -70,00 |
A | 14.02.2020 | 20,00 | 15,00 | -70,00 |
Görüldüğü üzere Bakiye kısmında yapılan işlem toplam alacaktan toplam bakiyeyi çıkarınca elde edilen sonucu gösteriyor. Ben hepsinin ayrı ayrı yukarıda verdiğim örnekteki gibi hesaplatmak istiyorum.
Toplam 0 cevap