SQL Server累计用户数天数

SQL Server累计用户数天数,sql,sql-server,azure-sql-database,Sql,Sql Server,Azure Sql Database,我有这样一个用户表: id | createdAt | name ... ---+--------------------------------+----------- 1 2017-04-12 13:19:37.287 +00:00 X 2 2017-04-12 13:19:37.287 +00:00 Y 3 2017-04-12 13:19:37.287 +00:00 Z 4 2017-04-13 13:

我有这样一个用户表:

id | createdAt                      | name  ...
---+--------------------------------+-----------
1    2017-04-12 13:19:37.287 +00:00    X
2    2017-04-12 13:19:37.287 +00:00    Y
3    2017-04-12 13:19:37.287 +00:00    Z
4    2017-04-13 13:19:37.287 +00:00    T
5    2017-04-13 13:19:37.287 +00:00    W
6    2017-04-14 13:19:37.287 +00:00    W
7    2017-04-14 13:19:37.287 +00:00    W
day        | count
-----------+--------
2017-04-12    3
2017-04-13    5
2017-04-14    7
我需要的是每天的累积用户数,如下所示:

id | createdAt                      | name  ...
---+--------------------------------+-----------
1    2017-04-12 13:19:37.287 +00:00    X
2    2017-04-12 13:19:37.287 +00:00    Y
3    2017-04-12 13:19:37.287 +00:00    Z
4    2017-04-13 13:19:37.287 +00:00    T
5    2017-04-13 13:19:37.287 +00:00    W
6    2017-04-14 13:19:37.287 +00:00    W
7    2017-04-14 13:19:37.287 +00:00    W
day        | count
-----------+--------
2017-04-12    3
2017-04-13    5
2017-04-14    7
我试着用这个SQL语句对几天进行分组,但它只得到当天的记录,而不是累计记录

SELECT 
    CAST(createdAt AS DATE) AS date, COUNT(*) AS userCount 
FROM 
    dbo.Users 
GROUP BY 
    CAST(createdAt AS DATE) 
ORDER BY 
    CAST(createdAt AS DATE) DESC
谢谢你的帮助


感谢您在SQL Server 2012+中使用累计总和:

SELECT CAST(createdAt AS DATE) as date, COUNT(*) as userCount,
       SUM(COUNT(*)) OVER (ORDER BY CAST(createdAt AS DATE)) as cumulative_count
FROM dbo.Users u
GROUP BY CAST(createdAt AS DATE)
ORDER BY CAST(createdAt AS DATE) DESC;
在早期版本中,还需要其他一些方法,例如关联子查询:

WITH u as (
      SELECT CAST(createdAt AS DATE) as date, COUNT(*) as userCount
      FROM dbo.Users u
      GROUP BY CAST(createdAt AS DATE)
     )
SELECT u.*,
       (SELECT SUM(usrCount)
        FROM u u2
        WHERE u2.date <= u.date
       ) as cumulative_count
FROM u
ORDER BY date DESC;

您正在使用哪个版本的SQL Server?Azure SQL@GordonLinoff