SQL View - Yaşlandırma için Borç Alacak - Bakiye

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.

hsnblr hsnblr (1)
4 yıl önce sordu

    Toplam 0 Cevap


    üyelik gerektirir

    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