【发布时间】:2019-09-18 22:54:51
【问题描述】:
我必须构建一个图表,根据多个过滤器(周、月、自定义日期范围)显示每天的数据。
问题是在我的数据库中我只有创建记录的日期,这意味着
where Date >= @start AND Date <= @start
在没有记录的日子里不会返回行。
我希望它在那些日子里返回结果为 0 的行,但我不知道如何在 SQL 中执行此操作
数据示例
2019-09-13 12:00:43.7761868
2019-09-13 12:01:20.8275512
2019-09-13 21:28:59.3311800
2019-09-13 21:32:12.8601389
2019-09-14 04:37:25.6108193
2019-09-16 13:34:39.7449688
2019-09-16 14:06:18.0098897
2019-09-16 14:59:22.4131463
2019-09-16 15:00:38.8086073
2019-09-17 05:45:06.9280049
2019-09-17 05:45:50.1708972
2019-09-17 13:50:23.9503997
2019-09-17 13:55:13.1940063
2019-09-17 18:40:26.3523765
2019-09-17 18:41:08.2932910
2019-09-18 03:48:59.2092904
2019-09-18 03:49:41.0802705
2019-09-18 06:10:47.0732559
2019-09-18 06:11:30.1833908
注意没有关于日期的记录
2019-09-15
预期的结果是
2019-09-13
2019-09-14
2019-09-15
2019-09-16
2019-09-17
2019-09-18
【问题讨论】:
-
您似乎想要
NOT IN(),但“返回结果为0 的行” 不清楚。当您说表示结果为 1 的行时,另一方面您说结果为 0。请编辑您的问题以包含示例数据和所需结果作为格式化文本而不是图像。 -
您需要一个日历表 - 静态表(首选)或动态构建的表。您从日历外部连接到您的数据并在所需的基础上进行聚合(每天、每月等)。使用外连接,您的结果至少包含每个日期的一行。这类事情有很多讨论。
-
用数据示例更新帖子
-
@SM我明白了,我会尝试这种方法
-
同意@SMor。这是您可能会发现有用的链接:mssqltips.com/sqlservertip/4054/…
标签: sql sql-server