Postgres SELECT id LAG(id) OVER(ORDER BY id)FROM invoice WHERE id = 2
Postgres SELECT id LAG(id) OVER (ORDER BY id) FROM invoice WHERE id = 2
我在整个 Internet 上都看过了,但未能按预期获得此查询 运行。
我有一张 table 的发票,有些发票相互关联,因为它们属于同一个项目。
我的票说我必须根据提供的发票获得上一张发票。
假设项目 A 有 10 张发票,我正在查看发票 #4,我必须编写一个查询,该查询将 return 上一张发票的 ID。请记住,发票 table 是各种项目的所在地,每个项目都可以有很多自己的发票,所以我想避免取回许多 ID 然后对它们进行迭代。
为了说明这个问题,我写了这个fiddle。
当我不针对 steps.id 进行过滤时,它的工作方式在某种程度上是可以接受的,但这意味着 return 要筛选数百个 ID。
我试了又试,但似乎无法将 previousStep 列绑定到 ID 列。
只需为相同的 project
找到下一个最大 id
的发票:
SELECT inv2.id
FROM invoice AS inv1
JOIN invoice AS inv2
ON inv1.project = inv2.project AND inv1.id > inv2.id
WHERE inv1.id = 1057638
ORDER BY inv2.id DESC
LIMIT 1;
我在整个 Internet 上都看过了,但未能按预期获得此查询 运行。 我有一张 table 的发票,有些发票相互关联,因为它们属于同一个项目。
我的票说我必须根据提供的发票获得上一张发票。 假设项目 A 有 10 张发票,我正在查看发票 #4,我必须编写一个查询,该查询将 return 上一张发票的 ID。请记住,发票 table 是各种项目的所在地,每个项目都可以有很多自己的发票,所以我想避免取回许多 ID 然后对它们进行迭代。
为了说明这个问题,我写了这个fiddle。 当我不针对 steps.id 进行过滤时,它的工作方式在某种程度上是可以接受的,但这意味着 return 要筛选数百个 ID。 我试了又试,但似乎无法将 previousStep 列绑定到 ID 列。
只需为相同的 project
找到下一个最大 id
的发票:
SELECT inv2.id
FROM invoice AS inv1
JOIN invoice AS inv2
ON inv1.project = inv2.project AND inv1.id > inv2.id
WHERE inv1.id = 1057638
ORDER BY inv2.id DESC
LIMIT 1;