首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取where子句之前的行

获取where子句之前的行
EN

Stack Overflow用户
提问于 2018-11-07 16:27:38
回答 1查看 52关注 0票数 0

我想要获取

我有一个名为slot_machine_history的表,它表示给定老虎机的所有移动(售出、重新定位、销毁、挂起)。

我想要获得每个卖出运动之前的行,该运动由“V”和“V”运动标识。因为我想要得到的公司是插槽的所有者,以及插槽的新所有者

代码语言:javascript
复制
  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查询应该返回:

代码语言:javascript
复制
 612134                 'TRANSPORT'             1
 612134                 'V'                     10
 612134                 'SUSPENDED'             10
 612134                 'V'                     14
EN

回答 1

Stack Overflow用户

发布于 2018-11-07 16:39:52

为此,您需要一些合理的方法来对行进行排序。希望您的表有一些递增的东西,比如机器执行的每个移动事件的日期或计数器:

代码语言:javascript
复制
  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

然后,您可以执行如下查询:

代码语言:javascript
复制
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子句)查询返回的行的顺序

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53185759

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档