Выберите дату1, дату2 из таблицы, находясь в режиме Redshift - PullRequest
0 голосов
/ 17 марта 2020

Какой правильный синтаксис для создания транзакции на основе диапазона дат.

для примера. это мой набор дат

Таблица

DocID     Date1           Date2 
0001 2020-01-01 2020-01-03

, и это то, чего я хочу достичь с тех пор (Date1) - (Date2) = 2, поэтому у нас есть 2020-01-02 и 2020 -01-03 в dateref и использует тот же DocID

DocID     Date1          Date2           DateRef 
0001 2020-01-01 2020-01-03 2020-01-02
0001 2020-01-01 2020-01-03 2020-01-03
Спасибо

1 Ответ

0 голосов
/ 17 марта 2020

Для этого в SQL обычно требуется таблица чисел или рекурсивный CTE - ни один из которых Redshift не поддерживает напрямую.

Если у вас есть таблица, достаточно большая для нужных вам строк, вы можете использовать:

with n as (
      select row_number() over (order by docid) as n
      from t
     )
select t.*,
       (t.date1 + n * interval '1 day') as date_ref
from t join
     n
     on t.date1 + n * interval '1 day' <= t.date2
...