为什么“自己的查询级别的FROM子句中不允许使用聚合函数”?

Tom*_*lis 6 postgresql

前者给我错误消息“在其自己的查询级别的 FROM 子句中不允许聚合函数”,而后者是允许的。除非我弄错了,后者等同于前者,因为它只是为v.

我正在编写一个代码生成器,因此将前者的自然形式重写为后者的人工形式有点繁琐。

但禁止前者的理由是什么?

SELECT * FROM
((SELECT 0 as "v") as "T1"
 INNER JOIN LATERAL
 (SELECT
  SUM("v") as "r"
  FROM (SELECT 0) as "T1") as "T2"
 ON TRUE) as "T1"
Run Code Online (Sandbox Code Playgroud)
SELECT * FROM
((SELECT 0 as "v") as "T1"
 INNER JOIN LATERAL
 (SELECT
  SUM("v_again") as "r"
  FROM (SELECT "v" as "v_again") as "T1") as "T2"
 ON TRUE) as "T1"
Run Code Online (Sandbox Code Playgroud)