如何在 SELECT 子句的子查询中使用别名? PostgreSQL

How to use an alias in a subquery in the SELECT clause ? postgreSQL

首先,感谢您的宝贵时间!

我已将我的数据库从 MariaDB 迁移到 PostgreSQL,现在我的一些查询不再有效。

这是一个例子:

SELECT DISTINCT table.column AS columnAlias,
          SUM(table2.column)/(SELECT COUNT(table.column) 
                              FROM table 
                              WHERE table.column= columnAlias) 
FROM ...

问题是当我的数据库是 MariaDB 数据库时,这个 SQL 查询运行良好,但实际上,我不得不将它迁移到 PostgreSQL 数据库,现在它抛出一个

ERROR: 42703: column "columnAlias" does not exists.

我认为问题在于 PostgreSQL 不接受子查询中的别名,但是您知道如何解决这个问题吗?或其他完成工作的方法?

感谢您的宝贵时间,

纪尧姆。

您可以使用横向连接:

SELECT DISTINCT v.columnAlias,
                SUM(table2.column) / (SELECT COUNT(table.column)
                                       FROM table WHERE table.column= v.columnAlias)
FROM ... CROSS JOIN LATERAL
     (VALUES (table.column)) v(columnAlias)