Кто-нибудь может помочь мне предоставить SQL согласно моему запросу - PullRequest
0 голосов
/ 05 марта 2019
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 Ответ

1 голос
/ 05 марта 2019

Вы можете сгенерировать серию дат, используя:

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;
...