我的公司正在从 Netezza 过渡到 AWS/Redshift。使用 Netezza 时,在 select 语句中命名列很方便,然后能够再次引用它,例如:
Select Column1 + Column2 as Alias1, Alias1 + Column3 as Alias2 from X where Alias1 > 0
Netezza 允许我执行此操作,但我不能在 Redshift 中执行此操作。 (我也不能在 MS SQL 中执行此操作)。我将无法在 SELECT 语句中引用列别名,也无法在 WHERE 子句中引用它。
此功能的名称是什么,是否有实现它的方法?如果没有此功能,我将不得不繁琐地编写子查询。
谢谢
最佳答案
你不能这样做,但有一个非常具体和合乎逻辑的原因可以说明为什么不这样做。
SQL 查询的逻辑处理所涉及的阶段按特定顺序如下:
FROM clause
WHERE clause
GROUP BY clause
HAVING clause
SELECT clause
DISTINCT clause
ORDER BY clause
LIMIT / OFFSET clause
因此,当您的查询到达select
时,其他一切都已完成。 where
部分位于 select
部分之前,因此看不到您设置的列别名。
您可以从这个 link 中阅读更多内容.
关于postgresql - 允许您在 SELECT 语句中引用别名列的 PostgreSQL 函数叫什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50419443/