Sadique KT Ответов: 1

Как найти aggregate total в SQL


Я написал следующий запрос, чтобы получить результат, показанный в таблице ниже
SELECT EOMONTH (ADateTime) ADateTime, 
				CAST (SUM(ISNULL(Profit,0)) AS decimal(18,3)) Profit
				FROM CostLedger
				WHERE ISNULL(Profit,0)>0 AND YEAR(ADatetime)=YEAR(CAST ( '2017-May-01' as Date))
				GROUP BY  EOMONTH (ADateTime)


РЕЗУЛЬТАТЫ
ADateTime	Profit
2017-03-31	17.386
2017-04-30	180.194
2017-05-31	158.983
2017-06-30	915.255


Мне нужно получить совокупную сумму в каждой строке следующим образом

ADateTime  Profit          Total_Profit
2017-03-31	17.386	        17.386
2017-04-30	180.194	        197.58  (Added Previous Row Profit with Current Row)
2017-05-31	158.983	        356.563
2017-06-30	915.255	        1271.818


Любая Помощь....чтобы переписать мой скрипт?

Что я уже пробовал:

SELECT EOMONTH (ADateTime) ADateTime, 
				CAST (SUM(ISNULL(Profit,0)) AS decimal(18,3)) Profit
				FROM CostLedger
				WHERE ISNULL(Profit,0)>0 AND YEAR(ADatetime)=YEAR(CAST ( '2017-May-01' as Date))
				GROUP BY  EOMONTH (ADateTime)


чтобы получить первый результат таблицы

1 Ответов

Рейтинг:
5

OriginalGriff

Зависит от версии SQL, которую вы используете. Для SQL 2012 и более поздних версий попробуйте:

SELECT a.ADateTime, a.Profit,
       SUM(Profit) OVER(ORDER BY EOMONTH(ADateTime)
           ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW) 
           AS Balance
FROM (SELECT EOMONTH (ADateTime) ADateTime, 
			 CAST (SUM(ISNULL(Profit,0)) AS decimal(18,3)) Profit
	  FROM CostLedger
	  WHERE ISNULL(Profit,0)>0 AND YEAR(ADatetime)=YEAR(CAST ( '2017-May-01' as Date))
	  GROUP BY  EOMONTH (ADateTime)) a


Sadique KT

Спасибо , это сработало для меня...

OriginalGriff

Пожалуйста!