我想要获取
我有一个名为slot_machine_history的表,它表示给定老虎机的所有移动(售出、重新定位、销毁、挂起)。
我想要获得每个卖出运动之前的行,该运动由“V”和“V”运动标识。因为我想要得到的公司是插槽的所有者,以及插槽的新所有者
slot_machine_code movement_history current_company
612134 'NEW' 1
612134 'TRANSPORT' 1
612134 'TRANSPORT' 1
612134 'V' 10
612134 'TRANSPORT' 10
612134 'SUSPENDED' 10
612134 'V' 14我的sql查询应该返回:
612134 'TRANSPORT' 1
612134 'V' 10
612134 'SUSPENDED' 10
612134 'V' 14发布于 2018-11-07 16:39:52
为此,您需要一些合理的方法来对行进行排序。希望您的表有一些递增的东西,比如机器执行的每个移动事件的日期或计数器:
movement_event slot_machine_code movement_history current_company
1 612134 'NEW' 1
2 612134 'TRANSPORT' 1
3 612134 'TRANSPORT' 1
4 612134 'V' 10
5 612134 'TRANSPORT' 10
6 612134 'SUSPENDED' 10
7 612134 'V' 14然后,您可以执行如下查询:
SELECT slot_machine_code, movement_history, current_company FROM
(
SELECT t.*, LEAD(movement_history) OVER(PARTITION BY slot_machine_code ORDER BY movement_event ASC) as next_Movement_history
FROM your_table t
) z
WHERE
z.movement_history = 'V' OR z.next_movement_history = 'V'如果没有列表示记录的写入顺序,那么您就有点陷入困境了。添加一个。
如果当前的表Just-so恰好以插入的顺序返回行,那么使用它来添加rownum或类似的行就足够了,但要马上这样做,因为数据库返回行的顺序永远不能保证是插入的顺序,并且在内部数据重组将更改无序(没有order by子句)查询返回的行的顺序
https://stackoverflow.com/questions/53185759
复制相似问题