小编Dou*_*las的帖子

带有 JOIN 和 GROUP BY 查询的 SELECT 中的错误“列不存在”

我将 PostgreSQL 9.1 与 Ruby on Rails 应用程序一起使用。

我正在尝试列出属于同一项目 ID (proj_sous_projet_id = 2) 的每个“费用”(在我的历史表中:hist_version_charges)的最后一个版本。

这使我使用 max() 聚合函数并将结果应用于同一个表上的 JOIN 函数,因为如果 SELECT 子句中的列未出现在 GROUP BY 子句中,则 PostgreSQL 没有授权使用它们,但使用最大值() 显然我对包含最大值的行感兴趣!

这是我的查询:

SELECT h_v_charges.*, 
       max(last_v.version) as lv 
FROM hist_versions_charges h_v_charges 
    JOIN hist_versions_charges last_v 
      ON h_v_charges.version = lv 
    AND h_v_charges.proj_charge_id = last_v.proj_charge_id 
GROUP BY last_v.proj_sous_projet_id, 
         last_v.proj_charge_id 
HAVING last_v.proj_sous_projet_id = 2 
ORDER BY h_v_charges.proj_charge_id ASC;
Run Code Online (Sandbox Code Playgroud)

我得到的错误信息:

ERROR:  column "lv" does not exist
LINE 1: ..._versions_charges last_v ON h_v_charges.version = lv AND h_v...
                                                             ^
********** Error ********** …
Run Code Online (Sandbox Code Playgroud)

postgresql join select group-by

7
推荐指数
1
解决办法
4万
查看次数

标签 统计

group-by ×1

join ×1

postgresql ×1

select ×1