sql - SQL:试图获取未记录的日期
问题描述
那天我有一张包含(日期和订阅者)的表格,有些日子会有新的订阅者加入我的服务。我写了一个查询,让我得到每天新订户的数量(计数)。但是有些日子,没有新订阅者,这些天根本没有显示(没有新订阅者 = 没有记录)。我希望他们显示,并且我希望没有新订阅者的记录显示有 0 个新订阅者。
例如订阅者表:
Date Subscribers
03-08-2018 a,b
04-08-2018 a,b,c
05-08-2018 a,c,d
06-08-2018 a,
07-08-2018 a,e,g,k,l
我得到的表:
Date New_Subs
03-08-2018 2
04-08-2018 1
05-08-2018 1
07-08-2018 4
我应该得到:
Date New_Subs
03-08-2018 2
04-08-2018 1
05-08-2018 1
06-08-2018 0
07-08-2018 4
PS 我使用函数 min(date) 获取新的潜艇来获取它在数据库中显示的第一个日期
SELECT count(*) Subscribers , convert(varchar, creatingdate, 23)
FROM Payments p
JOIN
(SELECT msisdn , Min(creatingdate) AS day
FROM Payments p
GROUP BY MSISDN) groupedtt
ON p.MSISDN = groupedtt.MSISDN
AND p.CreatingDate = groupedtt.day
group by convert(varchar, creatingdate, 23)
order by convert(varchar, creatingdate, 23)
解决方案
你可以使用master..spt_values
. 查询它Type = 'P'
会给你从 0 到 2047 的数字。使用DATEADD(DAY, -1 * master..sp_values.number, GETDATE())
给你最后的 2048 日期。您可以使用此表开始您的选择,并使用与订阅者表的左连接来获取所有订阅者。在那之后,对于那些一无所有的日子, COUNT 也将返回 0。
推荐阅读
- 5g - 5G 控制平面参考点接口是否仅用于演示,还是与基于服务的接口分开的真实接口?
- terraform - Terraform aws 提供程序 - 如何使用 ~/.aws/config 中的默认区域
- r - 计算分组面板数据中的熵
- java - 登录后android应用程序未启动意图
- python - 练习加密并关闭 1 个字符
- react-admin - 创建新记录不会在没有刷新的情况下在列表中注册并创建重复记录
- ios - 阻止并成为新的主屏幕 Swift iOS
- c++ - 选择要调用的构造函数
- css - 单个 SCSS 规则在服务器上显示“未定义”但在 localhost 中有效
- c - 来自 Valgrind 的错误:“大小为 8 的无效写入”和“地址...低于堆栈指针”