Reputation: 2425
TakenOn is a datetime column
With the procedure as
;WITH TBL AS
(SELECT CONVERT(date,TakenOn) AS Date,
COUNT(*) AS 'NewSubs'
FROM Urls (NOLOCK)
WHERE FId = 11
AND (TakenOn >= @StartDate)
AND (TakenOn <= @EndDate)
GROUP BY CONVERT(date,TakenOn))
SELECT t1.Date, t1.NewSubs,
SUM(t1.NewSubs) AS 'TotalSubs'
FROM TBL t1
INNER JOIN TBL t2 ON t1.Date >= t2.Date
GROUP BY t1.Date, t1.NewSubs
the output is : //(which is wrong for me)
Date NewSubs TotalSubs
2014-09-19 2 2
2014-09-20 3 6
2014-09-21 1 3
2014-09-22 4 16
What should I change for the output to be
Date NewSubs TotalSubs
2014-09-19 2 2
2014-09-20 3 5
2014-09-21 1 6
2014-09-22 4 10
Upvotes: 4
Views: 3703
Reputation: 32713
Try this: SUM(t1.NewSubs) over(order by t1.Date)
For example:
;WITH TBL AS
(SELECT CONVERT(date,TakenOn) AS Date,
COUNT(*) AS 'NewSubs'
FROM Urls (NOLOCK)
WHERE FId = 11
AND (TakenOn >= @StartDate)
AND (TakenOn <= @EndDate)
GROUP BY CONVERT(date,TakenOn))
SELECT t1.Date, t1.NewSubs,
SUM(t1.NewSubs) over(order by t1.Date) AS 'TotalSubs'
FROM TBL t1
INNER JOIN TBL t2 ON t1.Date >= t2.Date
GROUP BY t1.Date, t1.NewSubs
Upvotes: 4