我尝试编写SQL查询以计算每天的用户数并将结果添加到一起。我被卡住了,因为我不知道如何动态地将结果添加到一起。
表:
UserId | CreateDate
-------+----------------------------
1 | 2016-06-23 13:59:24.0000000
2 | 2016-06-23 15:59:24.0000000
3 | 2016-06-24 05:59:24.0000000
...
我有以下查询来计算每天的注册数。
SELECT
CONVERT(date, u.CreateDate) as [Date], Count(UserId) as [Count]
FROM
User as u
GROUP BY
CONVERT(date, u.CreateDate)
ORDER BY
[Date]
我不知道如何将结果加起来。我希望SQL Server 2008 R2具有内置函数。或者我是否需要创建临时表?
假设第1天有2个注册,第2天有1个注册,第3天有4个注册,我希望得到如下结果:
2016-06-23 | 2
2016-06-24 | 2 + 1 = 3
2016-06-25 | 3 + 4 = 7
我需要一个动态解决方案,因为查询将受到date =>的另一个限制; CreateDate在x和y之间的位置。
由于 吕迪
答案 0 :(得分:2)
您可以使用sum
窗口函数来获取总计。
select [Date],sum([Count]) over(order by [Date])
from (SELECT CONVERT(date, u.CreateDate) as [Date], Count(UserId) as [Count]
FROM User as u
GROUP BY CONVERT(date, u.CreateDate)
) x
order by 1
添加where
子句以过滤内部查询中的特定日期范围。