Teradata:在间隔参数中使用列引用

Teradata : Using Column reference in the Interval Parameter

我有一个查询有问题,我想给日期加上一个区间,区间参数是我的table.

中某列的值

我的table是这样的

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',则查询成功。

谢谢。

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