我正在Teradata中使用易失性表,因为这是获得变量功能的唯一方法。我将其用于开始和结束日期,然后在子查询中使用。我这样做是为了只需要在一个地方更改日期即可。
CREATE VOLATILE TABLE MyTable AS
(
SELECT
DATE as runDate,
runDate - 30 as startDate,
runDate -1 endDate
) WITH DATA PRIMARY INDEX (runDate)
ON COMMIT PRESERVE ROWS;
这允许易失性表一直存在直到我的会话结束或对其进行修改。
然后,我将其用于此类
SELECT
myAVG
from
(
SELECT
AVERAGE(columnName) as myAVG
FROM
WHERE readingDate > MyTable.startDate
AND readingDate < MyTable.enddDate
) a
我注意到的是,使用易失性表变量明显要比直接使用日期慢
WHERE readingDate > DATE-30
AND readingDate < DATE-1
我没想到的。
在人们开始说:“为什么不只在主查询中计算平均值?”之前,我将其用于说明目的,实际上可能有几个不同的子查询。
以这种方式使用变量是否缺少某些东西?