【发布时间】:2019-07-16 11:17:56
【问题描述】:
我在 SQL Server 中使用以下查询来查找 distinct 过去 7 天(不包括今天的日期)的登录次数:
SELECT TOP (7) CONVERT(date, LoginTime) AS ActivityDate, COUNT(DISTINCT LoginID) AS UserCount
FROM Login
WHERE CONVERT(date, LoginTime) < CONVERT(date, GETDATE())
GROUP BY CONVERT(date, LoginTime)
ORDER BY ActivityDate DESC;
它生成以下输出:
ActivityDate | UserCount
----------------------
2019-02-21 | 2
2019-02-20 | 3
2019-02-19 | 2
2019-02-15 | 2
2019-02-14 | 1
2019-02-13 | 2
2019-02-12 | 3
我的期望是所有最后 7 天都按顺序排列(不像当前输出,在 2019-02-19 之后缺少日期 2019-02-16、2019-02-17 和 2019-02-18)。我需要它,如果缺少日期,它必须以 0 计数显示。
我的预期输出如下:
ActivityDate | UserCount
----------------------
2019-02-21 | 2
2019-02-20 | 3
2019-02-19 | 2
2019-02-18 | 0
2019-02-17 | 0
2019-02-16 | 0
2019-02-15 | 2
【问题讨论】:
-
Do
Login表在LoginTime列中有那些无登录日期;或以某种方式;你想要一个相当 smart 的查询将这些日期添加到结果中吗? -
@vahdet
LoginTime具有datetime数据类型。
标签: sql sql-server tsql outer-join gaps-and-islands