【发布时间】:2018-07-08 00:40:35
【问题描述】:
我有一个 sql server 表,结构和数据如下:
Created , keyword
'2017-10-03 19:18:00', 'test7'
'2017-10-07 01:06:00', 'test3'
'2017-10-07 15:19:00', 'test2'
'2017-10-07 21:39:00', 'test10'
'2017-10-08 00:36:00', 'test3'
'2017-10-08 01:26:00', 'test13'
'2017-10-08 01:33:00', 'test9'
'2017-10-08 08:23:00', 'test13'
'2017-10-08 09:35:00', 'test9'
'2017-10-08 12:38:00', 'test9'
'2017-10-08 15:07:00', 'test2'
'2017-10-10 05:09:00', 'test4'
我想运行一个计算活动的查询并按天分组,还考虑没有记录任何内容的天数,并将这些天的活动显示为零。因此,我想要一个返回以下结果集的查询:
'2017-10-03', 1
'2017-10-04', 0
'2017-10-05', 0
'2017-10-06', 0
'2017-10-07', 3
'2017-10-08', 7
'2017-10-09', 0
'2017-10-03', 1
我知道如何运行查询并按天数对其进行分组,但不知道如何计算没有记录的天数。由于我是 Sql 新手,如果有人能提供一个工作示例,我将不胜感激。提前致谢
【问题讨论】:
-
最好的解决方案是创建一个表格日历,将您的表格加入此日历(日历表格 lrft 在 dt = dt 和 dt 之间加入您的表格 ...)并将结果分组。如果您没有日历表,则可以“即时”生成它
-
从以前使用另一个 DBMS 的经验来看,我认为没有一个简单的解决方案。也许最好的办法是遍历查询的输出并手动填补空白。
-
谢谢,你能举个例子吗?
标签: sql sql-server