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
答案 0 :(得分:1)
您可以使用以下方法生成一系列日期:
select date '2019-01-02' + level
from dual
connect by date '2019-01-01' + level < date '2019-02-28'
然后其余的操作可以使用left join
和lag()
:
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;