SQL Server 2012 den önce kümülatif toplama ihtiya duydugumuz zamanlar genelde iç içe sorgular yazar ve sonuç elde etmeye çalisirdik. Sql Server 2012 ile artik kümülatif toplam almak eskisi kadar zor degil.
Microsoft SQL Server 2012 de Window Function özelliklerini gelistirerek, yeni özellikler katmis. Ansi standartlarindan olan bu özellikleri sonraki makalelerimizde detayli anlatacagim.
Bu makalemizde sadece kolayca kümülatif toplam nasil aliniri gösterecegim.
Kümülatif toplam için daha önce yazdigim makaleye buradan ulasabilirsiniz.
Ilk olarak asagidaki sorguyu çalistirarak örnek tablomuzu olusturalim.
create table Ornek_AylikGelir ( tarih datetime, Toplam int, ) insert into Ornek_AylikGelir(tarih,Toplam) values('2012.05.01',100) insert into Ornek_AylikGelir(tarih,Toplam) values('2012.05.02',50) insert into Ornek_AylikGelir(tarih,Toplam) values('2012.05.03',20) insert into Ornek_AylikGelir(tarih,Toplam) values('2012.05.04',80) insert into Ornek_AylikGelir(tarih,Toplam) values('2012.05.05',100) insert into Ornek_AylikGelir(tarih,Toplam) values('2012.05.06',200)
Asagidaki sorgu ile tarihe göre sirali olarak kümülatif toplam almis oluruz.
select tarih,Toplam,sum(Toplam) over(order by tarih) as KumulatifToplam from Ornek_AylikGelir
Önceki makalemizi okursaniz 2012 den önceki SQL Server versiyonlarinda bunu nasil yapacaginiz görebilirsiniz. Yukaridaki Sorgunun sonucu asagidaki gibi dönmektedir.
tarih | Toplam | KumulatifToplam |
---|---|---|
2012-05-01 00:00:00.000 | 100 | 100 |
2012-05-02 00:00:00.000 | 50 | 150 |
2012-05-03 00:00:00.000 | 20 | 170 |
2012-05-04 00:00:00.000 | 80 | 250 |
2012-05-05 00:00:00.000 | 100 | 350 |
2012-05-06 00:00:00.000 | 200 | 550 |