一尘不染

如何计算范围内每天的记录(包括没有记录的天数)

sql

由于上次我并未真正提出正确的要求,因此我尝试对此问题进行一些细化。我本质上是在做这个查询:

Select count(orders)
From Orders_Table
Where Order_Open_Date<=To_Date('##/##/####','MM/DD/YYYY')
and Order_Close_Date>=To_Date('##/##/####','MM/DD/YYYY')

其中## / ## /

是同一天。本质上,此查询旨在查找任何给定日期的“未结”订单数。唯一的问题是,我想在一年或一天的每一天中都这样做。我想如果我知道如何将## /

/ ####定义为变量,然后将计数按该变量分组,那么我可以使它起作用,但我不确定如何做到这一点-
或在那里也可能是另一种方式。我目前在SQL开发人员上使用Oracle SQL。感谢您的任何投入。


阅读 190

收藏
2021-03-08

共1个答案

一尘不染

您可以使用这样的“行生成器”技术 (针对Hogan的评论进行编辑)

Select RG.Day,
       count(orders)
From   Orders_Table,
      (SELECT trunc(SYSDATE) - ROWNUM as Day
       FROM  (SELECT 1 dummy FROM dual)
       CONNECT BY LEVEL <= 365
      ) RG
Where RG.Day              <=To_Date('##/##/####','MM/DD/YYYY')
  and RG.Day              >=To_Date('##/##/####','MM/DD/YYYY')
  and Order_Open_Date(+)  <= RG.Day
  and Order_Close_Date(+) >= RG.Day - 1
Group by RG.Day
Order by RG.Day

这应该列出上一年的每一天以及相应的订单数量

2021-03-08