Teradata: использование ссылки на столбец в параметре Interval - PullRequest
0 голосов
/ 04 ноября 2019

У меня проблема с запросом, я хочу добавить интервал к дате, а параметр interval - это значение столбца в моей таблице.

Моя таблица выглядит так

DATE_       | STEP
2019-10-01   10
2019-11-01   30

Этот запрос не выполняется:

SELECT 
,BEGIN(EXPD) AS DH_STEP
,DATE_
FROM MY_TABLE
EXPAND ON PERIOD(CAST( DATE_ || ' 00:00:00' AS TIMESTAMP(0)), CAST(DATE_|| ' 00:00:00' AS TIMESTAMP(0)) + INTERVAL '1' DAY)
EXPD BY INTERVAL STEP MINUTE;

На самом деле, запрос завершается успешно, если я, например, заменяю STEP на '10'.

Спасибо.

1 Ответ

0 голосов
/ 04 ноября 2019

BY INTERVAL должно быть жестко закодированным значением. Вы можете написать обходной путь, чтобы сначала создать интервал для каждой минуты, а затем выполнить фильтрацию на основе шага:

SELECT 
   Begin(EXPD) AS DH_STEP,
   DATE_
FROM
 (
   SELECT EXPD, step
     ,DATE_
   FROM MY_TABLE
   EXPAND ON PERIOD(Cast( DATE_ AS TIMESTAMP(0)), Cast(DATE_ +1 AS TIMESTAMP(0))) AS EXPD 
   -- if step is always a multiple of 10 you can reduce the number of rows using `10`minute
   BY INTERVAL '1' MINUTE
 ) AS dt
WHERE Cast((dh_step - Cast( DATE_ AS TIMESTAMP(0)) Minute(4)) AS INT) MOD step = 0
...