我正在尝试引用新变量DATE_YEAR
而不是我在Teradata数据库DATE_YEAR
中的原始TEST
。
我怎么才能得到它?
我在Teradata文档中找不到任何内容。
SELECT DATE_YEAR+1 AS DATE_YEAR, COUNT(1)
FROM TEST
WHERE DATE_YEAR = 2016 GROUP BY 1;
答案 0 :(得分:2)
基于标准SQL,SELECT-list中的列在 FROM / WHERE / GROUP BY / HAVING / OLAP后创建,但之前 ORDER BY,所以你可以仅在ORDER BY中使用别名。
由于历史原因,Teradata允许在任何地方重新使用别名,这非常方便,因为您不必剪切和粘贴或使用嵌套的SELECT。但是有一些范围规则,只有当找不到列名时才会在别名列表中查找。因此,粗略的经验法则是:永远不要指定与现有列名匹配的别名,然后您可以在任何地方轻松使用它:
SELECT DATE_YEAR+1 AS DATE_YR, COUNT(1)
FROM TEST
WHERE DATE_YR = 2016 GROUP BY 1;
答案 1 :(得分:0)
将其包装在派生表中:
select DATE_YEAR_ADJUSTED, count(*)
from
(
SELECT DATE_YEAR+1 AS DATE_YEAR_ADJUSTED
FROM TEST
) as dt
WHERE DATE_YEAR_ADJUSTED = 2016
GROUP BY DATE_YEAR_ADJUSTED
GROUP BY没有多大意义......反正只有一年。
PS。我不了解Teradata,但我希望这有效。 ANSI SQL。