如何获取查询条件中的动态年份,我需要获取2017、2018、2019的数据,目前我正在对其进行硬编码(而在(2017、2018、2019)中的FSC_YR则需要动态方式。如何在Teradata中做到这一点。 我尝试了提取(从current_date的年)-2,提取(从current_date的年)-1,提取(从current_date的年)-3)。我收到太多错误的表达。
答案 0 :(得分:2)
由于要查找一定范围的年份,为什么不只使用BETWEEN?
SELECT *
FROM data
WHERE fsc_yr BETWEEN EXTRACT(year FROM current_date - interval '2' year) AND EXTRACT(year FROM current_date)
但是正如@dnoeth在评论中指出的。
为了避免在2月29日运行该错误时,使用INTERVAL可能不是最安全的方法。
但是,仅从年份中减去并不是很糟糕。
SELECT *
FROM data
WHERE fsc_yr BETWEEN EXTRACT(year FROM current_date)-2 AND EXTRACT(year FROM current_date)
还要注意,这种错误可能是由于在查询中为IN
选择了多于一列的原因
例如,这将失败:
SELECT * FROM Table1
WHERE Col1 IN (SELECT Col1, Col2 FROM Tabel2)
因此,如果您将查询用于带有*
的数据,那么仍然会导致该错误。