有人可以根据我的要求帮助我提供SQL吗

时间:2019-03-05 11:16:05

标签: sql oracle11g group-by

select created_date,count(*) tot 
from smart_meters_t 
group by created_date 
order by created_date;

我想要在Oracle Langauage中使用此代码。对此的任何帮助都将非常有帮助。

created_date  tot 
12/01/2019    148
06/02/2019    1
28/02/2019    48

我需要如下数据

 created_date  tot 
    12/01/2019   148
    13/01/2019   148
    14/01/2019   148
    .
    .
    .
    .
    05/01/2019   148
    06/02/2019    1
    07/02/2019    1
    08/02/2019    1
    09/02/2019    1
    .
    .
    .
    .
    27/02/2019    1
    28/02/2019    48

1 个答案:

答案 0 :(得分:1)

您可以使用以下方法生成一系列日期:

select date '2019-01-02' + level
from dual
connect by date '2019-01-01' + level < date '2019-02-28'

然后其余的操作可以使用left joinlag()

with dates as (
      select (date '2019-01-02' + level) as dte
      from dual
      connect by date '2019-01-01' + level < date '2019-02-28'
     )
select d.dte,
       coalesce(t.tot,
                lag(t.tot ignore nulls) over (order by d.dte)
               ) as tot
from dates d left join
     t
     on d.dte = t.created_date
order by d.dte;