我有一个查询,它给我两个日期之间的COUNT,start_date和end_date,并按不同的列分组 . 我有什么方法可以获得每天的COUNT吗?如同说start_date是date1而end_date是date5,所以我需要为'date1 to date2','date1 to date3',然后'date1 to date4',然后'date1 to date5'运行一次查询 . 如在基于开始和结束日期多次运行相同的查询?我的查询看起来像
Select COUNT(A), B, C, D
FROM TABLE
WHERE CONDITION1 AND DATE BETWEEN start_date AND end_date
GROUP BY B, C, D
2 回答
在group by中添加
DATE
如果该字段是datetime,则使用
convert
( from @ta.speot.is : SQL Server 2005 does not have DATE as a type )在group by中添加
DATE
Edited based on the OP :
你必须使用循环并做一些像上面的事情
我将展示如何使用Oracle实现此目标,然后如何将其应用于Vertica .
我首先编写一个查询来获取日期列表 . 像这样:
返回:
我对Vertica不太熟悉,但看起来这可以用这个查询实现:
(来源:http://www.vertica-forums.com/viewtopic.php?t=1333)
然后,我使用笛卡尔/交叉连接到同一查询来创建日期范围:
结果如下所示:
如果您不想要单日范围(例如,2015年4月1日 - 2015年4月1日),只需将begin_date <= end_date更改为begin_date <end_date .
完成后,您可以将整个查询加入到正在运行的查询中:
这是一个SQLFiddle:http://sqlfiddle.com/#!4/9628d/9
我希望有所帮助 .