0
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.
Cevap yazabilmek için üye girişi yapmalısınız.
Eğer uzmanim.net üyesiyseniz giriş yapabilirsiniz: üye girişi yap
uzmanim.net'e üye olmak çok kolaydır: hemen kayıt ol
25 Ocak 2018 uzmanim.net güncellemesi
30 Haziran 2017 uzmanim.net güncellemesi
26 Aralık 2016 uzmanim.net güncellemesi
08 Eylül 2016 uzmanim.net kural ihlali yapan kullanıcılar ve yaptırımlar