让我们假设有一个表'items'有三列:'id','pos'和'neg',选择的结果应该按操作结果pos - neg
排序。Postgres:如何根据操作结果排序时获取行号?
所以,以下是这样运作的:
SELECT
id,
pos - neg AS diff
FROM items
ORDER BY diff DESC
现在我需要获取特定的行(表)的位置排序的“差异”的结果。我试过这个:
WITH summary AS (
SELECT
i.id,
i.pos - i.neg AS diff,
ROW_NUMBER() OVER(ORDER BY diff) AS position
FROM items i)
SELECT s.* FROM summary s WHERE s.id = 351435254
但是执行返回ERROR:column“diff”不存在。
那么,有可能获得这个位置,或者将差异保存在一个单独的列中会更好吗?
DIFF是别名尝试'ROW_NUMBER()OVER(ORDER BY我.pos - i.neg)AS位置代替 –
@Richard有效!谢谢! – aspermag