Существует ли функция SQL, которая может заполнять пропущенные даты в столбце Дата и заполнять ту же запись в столбце B предыдущим значением? (PostgresSQL) - PullRequest
0 голосов
/ 06 апреля 2020

Ссылочная статья объясняет и отвечает моему требованию в R. Как мне достичь этого в PostgreSQL? https://blog.exploratory.io/populating-missing-dates-with-complete-and-fill-functions-in-r-and-exploratory-79f2a321e6b5

В итоге:

Image of Initial table

В основном в приведенной таблице я хочу автоматически создавать новые записи с отсутствующими датами ( диапазон от 10-02 до 10-14).

Table with date created

Проблема этой таблицы заключается в том, что данные ставка дисконта и товар по-прежнему отсутствуют. Оператор SQL должен быть в состоянии обнаружить, когда в диапазоне есть первый элемент (например, в столбце ставка дисконта ), будут заполнены последующие пустые записи в поле ставка дисконта с тем же значением первого элемента, пока не будет найден другой элемент, затем повторите процесс.

Например, ставка дисконта от 10-02 до 10-14 должно быть 0,1 (основано на предыдущем значении 10-01), а с 10-16 и далее должно быть 0,2 (основано на предыдущем значении 10-15). Как мне добиться этого в SQL, если он включает в себя сотни и тысячи записей?

1 Ответ

0 голосов
/ 06 апреля 2020

Вы можете присоединиться к списку дат, сгенерированных с помощью generate_series()

select ...
from generate_series(date '2020-10-01', date '2020-10-14', interval '1 day) as g(dt)
  left join your_table t on t."date" = g.dt::date
where ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...