我需要从表中获取前一个id,但是我想将前一个记录限制为id_sucursal(branch)的给定id,因为如果我不这样做,第一行(id_sucursal)将会得到来自另一个sucursal的previous_id(滞后)。 我知道我可以通过id_sucursal订购并且工作正常但是我想将它保存在相同的id_sucursal上下文中,这是select语句,非常简单且不需要更多。
Select
-- current id
t.id,
-- when i order everything is ok but on the first row
-- I get the id from another sucursal
lag(id) OVER (ORDER BY t.id_sucursal) prev_id,
-- here sucursal may be different
t.id_sucursal
From sucursal_info
做一些像这样的事情会很棒:
Select
t.id,
lag(id) OVER (ORDER BY t.id_sucursal) (WHERE id_sucursal = t.id_sucursal) prev_id,
--
t.id_sucursal
From sucursal_info
当然还有更多的行涉及,但我只是带来了需要解释的内容。
答案 0 :(得分:1)
您似乎需要在 partition by
中添加 LAG
条款。
....
lag(id) OVER (parition by id_sucursal ORDER BY id_sucursal) prev_id.
.....
此外,我没有看到您为t
设置表的别名,但您将列称为t.column_name
。因此我删除了它