在源代码中引用同名的重命名变量 table
Reference a renamed variable with the same name in the source table
我正在尝试引用新变量 DATE_YEAR
,而不是我的 Teradata 数据库 TEST
中的原始 DATE_YEAR
。
我怎么才能得到它?
我在 Teradata 文档中找不到任何内容。
SELECT DATE_YEAR+1 AS DATE_YEAR, COUNT(1)
FROM TEST
WHERE DATE_YEAR = 2016 GROUP BY 1;
将其包装在派生的 table:
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.
基于标准 SQL SELECT 列表中的列是在 FROM/WHERE/GROUP BY/HAVING/OLAP 之后创建的,但是 before ORDER BY,所以只能在ORDER BY中使用别名。
由于历史原因,Teradata 允许在任何地方重复使用别名,这非常方便,因为您不必剪切和粘贴或使用嵌套的 SELECT。但是有一些范围规则,只有在找不到列名时才会在别名列表中查找它。所以粗略的经验法则是:永远不要分配与现有列名匹配的别名,然后您可以在任何地方轻松使用它:
SELECT DATE_YEAR+1 AS DATE_YR, COUNT(1)
FROM TEST
WHERE DATE_YR = 2016 GROUP BY 1;
我正在尝试引用新变量 DATE_YEAR
,而不是我的 Teradata 数据库 TEST
中的原始 DATE_YEAR
。
我怎么才能得到它?
我在 Teradata 文档中找不到任何内容。
SELECT DATE_YEAR+1 AS DATE_YEAR, COUNT(1)
FROM TEST
WHERE DATE_YEAR = 2016 GROUP BY 1;
将其包装在派生的 table:
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.
基于标准 SQL SELECT 列表中的列是在 FROM/WHERE/GROUP BY/HAVING/OLAP 之后创建的,但是 before ORDER BY,所以只能在ORDER BY中使用别名。
由于历史原因,Teradata 允许在任何地方重复使用别名,这非常方便,因为您不必剪切和粘贴或使用嵌套的 SELECT。但是有一些范围规则,只有在找不到列名时才会在别名列表中查找它。所以粗略的经验法则是:永远不要分配与现有列名匹配的别名,然后您可以在任何地方轻松使用它:
SELECT DATE_YEAR+1 AS DATE_YR, COUNT(1)
FROM TEST
WHERE DATE_YR = 2016 GROUP BY 1;