Merhaba,
SQL Server ‘da istediğiniz bir alanın kümülatif toplamını almak istiyorsanız aşağıdaki söz dizimini kullanabilirsiniz;
1 |
sum(SalesAmount) over (order by SalesOrderNumber) as CumulativeTotal |
SalesAmount alanı kümülatif toplanacak alanı belirtir.
SalesOrderNumber alanı neye göre sıralama yapılacağını belirtir. order by SalesOrderNumber bu şekilde kalırsa default olarak ASC (Ascending) olarak yani sonuçları artan sıraya göre sıralar. Aşağıdaki şekilde SalesOrderNumber yanına DESC (Descending) yazdığımızda sonuçları azalan sıraya göre sıralar.
1 |
sum(SalesAmount) over (order by SalesOrderNumber desc) as CumulativeTotal |
Örnek Uygulama;
FactInternetSales adında tablom mevcut. Burada SalesOrderNumber alanına göre sıralanmasını, SalesAmount alanının ise kümülatif şeklinde toplatmak istiyorum.
1 2 3 4 5 |
select SalesOrderNumber ,SalesAmount ,sum(SalesAmount) over (order by SalesOrderNumber) as CumulativeTotal from dbo.FactInternetSales |
Yukarıdaki kodun çıktısı aşağıdaki gibidir;
CumulativeTotal sütununda göreceğimiz üzere SalesAmount alanı kümülatif şekilde artmaktadır.