Выборочные данные в tblData
:Накопительное Добавление в SQL Server 2008
RowID SID Staken DateTaken
---------------------------------------------
1 1 1 2014-09-15 14:18:11.997
2 1 1 2014-09-16 14:18:11.997
3 1 1 2014-09-17 14:18:11.997
Я хотел бы получить количество daywise СВДС, а также накопленную сумму как
Date ThisDayCount TotalCount
-----------------------------------
2014-09-15 1 1
2014-09-16 10 11
2014-09-17 30 41
Это то, что я сейчас в моей хранимой процедуре с началом & параметры даты окончания. Есть ли более элегантный способ сделать это?
;WITH TBL AS
(
SELECT
CONVERT(date, asu.DateTaken) AS Date,
COUNT(*) AS 'ThisDayCount'
FROM
tblData asu
WHERE
asu.SID = 1
AND asu.STaken = 1
AND asu.DateTaken >= @StartDate
AND asu.DateTaken <= @EndDate
GROUP BY
CONVERT(date, asu.DateTaken)
)
SELECT
t1.Date, t1.ThisDayCount, SUM(t1.ThisDayCount) AS 'TotalCount'
FROM
TBL t1
INNER JOIN
TBL t2 ON t1.date >= t2.date
GROUP BY
t1.Date, t1.ThisDayCount
Это исчерпывающе описано Аароном Бертраном здесь: http://sqlperformance.com/2012/07/t-sql-queries/running-totals Суть - это самый лучший подход до 2012 года. – JNK