Sql 使用Teradata中带间隔函数的子查询筛选30个月的数据

Sql 使用Teradata中带间隔函数的子查询筛选30个月的数据,sql,subquery,teradata,intervals,Sql,Subquery,Teradata,Intervals,我想使用interval函数中的子查询过滤掉数据 下面是我使用的查询 SEL * FROM my_table WHERE MY_DATE < CURRENT_DATE- INTERVAL '30' MONTH; 上面的查询可以工作,但是我想使用一个子查询参数化时段“30”。请建议如何实现这一目标 提前感谢不要使用年/月的间隔计算,因为它会失败,例如,根据标准SQL,日期“2016-12-31”+间隔“30”个月的结果在2019-06-31,这显然是不存在的 SELECT * FROM

我想使用interval函数中的子查询过滤掉数据

下面是我使用的查询

SEL * FROM my_table WHERE MY_DATE < CURRENT_DATE- INTERVAL '30' MONTH;
上面的查询可以工作,但是我想使用一个子查询参数化时段“30”。请建议如何实现这一目标


提前感谢

不要使用年/月的间隔计算,因为它会失败,例如,根据标准SQL,日期“2016-12-31”+间隔“30”个月的结果在2019-06-31,这显然是不存在的

SELECT * 
FROM my_table 
WHERE MY_DATE < ADD_MONTHS(CURRENT_DATE, (SELECT -col FROM tab));

如果col实际上是一个区间,则需要将其转换为INT。

这里的参数化是什么意思?用户应该提示输入值吗?为什么需要子查询?我不认为Teradata会允许您使用子查询来实现这一点,而且子查询会给您一个结果集,而不是一个值。我认为您需要创建一个存储过程才能执行类似的操作。我见过先构造查询,然后运行查询的存储过程。不幸的是,我不知道它是如何完成的。我记得它使用了一个查询,并整理了许多字符串,最终进行了输出查询,例如,从my_表中选择“SELECT*,其中my_DATE