<分区>
在 Postgresql 9.1+ 中,我尝试使用 ROW_NUMBER() 别名字段过滤 WHERE 子句中的结果集。此查询工作正常:
SELECT inv.client_pk,
inv.invoice_pk, inv.contract_pk,
ROW_NUMBER() OVER ( PARTITION BY inv.client_pk ORDER BY inv.client_pk) as row_number
FROM controllr.client as cli
LEFT JOIN controllr.invoice as inv ON inv.client_pk = cli.client_pk
WHERE client_status != 3;
但是当我在 WHERE 中添加“row_number”时:
SELECT inv.client_pk,
inv.invoice_pk, inv.contract_pk,
ROW_NUMBER() OVER ( PARTITION BY inv.client_pk ORDER BY inv.client_pk) as row_number
FROM controllr.client as cli
LEFT JOIN controllr.invoice as inv ON inv.client_pk = cli.client_pk
WHERE client_status != 3
AND row_number <= 3;
它给了我一个错误:
column "row_number" does not exist
当字段“row_number”作为别名字段明确存在时。
我做错了什么?
ps: 我已经尝试过 HAVING 子句