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

我在查询时遇到问题,我想在日期中添加一个间隔,并且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”,则查询成功。

谢谢。

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

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
本文链接:https://www.f2er.com/3164845.html

大家都在问