postgresql - 允许您在 SELECT 语句中引用别名列的 PostgreSQL 函数叫什么?

标签 postgresql amazon-web-services amazon-redshift netezza amazon-redshift-spectrum

我的公司正在从 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/

相关文章:

postgresql - docker ,错误: cannot run migrations: database needs bootstrapping;

java - Spring jdbc 模板中的 BadSqlGrammarException

amazon-web-services - 如何在 Ubuntu 上设置 AWS CloudWatch 的代理以获取(正确)自定义指标,例如 CPU、内存和磁盘使用率 %

javascript - 自动刷新 AWS Quicksight

sql - 获得每个月的余额并限制 Redshift

c++ - 为什么我使用soci连接postgresql时没有足够的数据库权限?

postgresql - 如何从具有 blob 值的 oracle 表为 postgresql 生成插入脚本

amazon-web-services - 如何正确连接 AWS Lambda 到 VPC 中的 RDS?

sql - 如何在 AWS redshift 和 AWS athena 中以一致的方式将 YYYYMMDD 格式的字符串转换为日期,而无需进行字符串操作

sql - 我如何获得 7 天前的日期?