MS SQL ile kümülatif toplam bulan sorgu

MS SQL ile kümülatif toplam bulan sorgu

Sql ile her satırda kümülatif toplam alan sorguda genellikle id sırasına göre kümülütaif toplam alınır. Ancak her zaman id sıralası işe yaramayabilir, mesala tarih sıralaması gerekirse bu durumda aşağıdaki gibi istenen sıralamaya göre sıra no oluşturup toplam almak gerekir. Ayrıca bazı tablolarda da id alanı olmayabilir. Aşağıdaki sorgu id yerine sıra no kulanılarak bu sorunda çözülmüş oluyor.

Geçici tablo oluşturma

SELECT 1 AS ID,'2015-02-10' AS TARIH,10 TUTAR
INTO #TABLO
UNION
SELECT 2 AS ID,'2015-02-15' AS TARIH,20 TUTAR
UNION
SELECT 3 AS ID,'2015-01-10' AS TARIH,10 TUTAR
UNION
SELECT 4 AS ID,'2015-03-15' AS TARIH,40 TUTAR
UNION
SELECT 5 AS ID,'2015-01-01' AS TARIH,30 TUTAR

Oluşturulan tablo aşağıdaki gibidir.

SELECT * FROM #TABLO

ID TARIH TUTAR
1 10.02.2015 10
2 15.02.2015 20
3 10.01.2015 10
4 15.03.2015 40
5 01.01.2015 30

 

Kümülatif / Birimli toplam bulan sorgu

SELECT T1.SIRA,T1.TARIH,T1.ID,T1.TUTAR,SUM(T2.TUTAR) AS KUMULATIF_TOPLAM
FROM
(SELECT RANK() OVER(ORDER BY TARIH,ID) AS SIRA,TARIH,ID,TUTAR
FROM #TABLO) AS T1
INNER JOIN
(SELECT RANK() OVER(ORDER BY TARIH,ID) AS SIRA,TARIH,ID,TUTAR
FROM #TABLO) AS T2
ON T2.SIRA<=T1.SIRA
GROUP BY T1.SIRA,T1.TARIH,T1.ID,T1.TUTAR
ORDER BY T1.SIRA 

Sonuç :

SIRA TARIH ID TUTAR KUMULATIF_TOPLAM
1 01.01.2015 5 30 30
2 10.01.2015 3 10 40
3 10.02.2015 1 10 50
4 15.02.2015 2 20 70
5 15.03.2015 4 40 110


İlgili Yazılar