当火车进入车站时,我有一个充满列车运行数据的数据库,我们可能会收到一条到达信息,当火车离开车站前往下一个目的地时,我们可能会收到一条出发信息。
因此,当火车到达车站时,我们通常会在到达时获得2条消息1,在它离开时获得1条消息。但是,有时这些数据会出错,因此我们可以获得另一条移动信息来纠正出发/到达数据。如果移动消息是对前一个的修正,则它将具有1的correction_ind,否则它将具有0的correction_ind。这意味着对于特定的电台,我们总共可以收到4条信息(出发,到达,固定出发,固定到达)
我试图在特定列车的路线上为每个站点获取0/1离场消息和0/1到达消息。我们按以下顺序选择移动消息:
我的查询如下:
SELECT
tm.variation_status,
tm.planned_timestamp,
tm.platform,
tm.actual_timestamp,
tm.event_type,
tm.timetable_variation,
sched.tps_description
FROM
train_activation ta,
train_movement tm
LEFT JOIN
cif_tiploc sched ON sched.stanox = tm.loc_stanox
WHERE
train_uid = 'C40200'
AND date(creation_timestamp) = '2014-08-20'
AND tm.train_id = ta.train_id
ORDER BY tm.correction_ind ASC
我对此查询的问题是对于给定的站点,我们可以获得0-2个出发消息和0-2到达消息。如果我添加以下GROUP BY tm.event_type
(这是告诉我们这是否是出发或到达消息的字段),我们将只收到2条消息,因为它将所有depature组合在一起并且所有到来了!
如何重新编写此查询,以便我们只为路径上的每个站点选择最佳到达/删除消息?
tm.loc_stanox
或sched.tps_description tm.event_type
tm.correction_ind
对前一条消息的修正是否为1,如果是修正则为0,如果不是任何关于这个问题的帮助都会很棒。
答案 0 :(得分:0)
如何按案例/条件审核订单,但是对于每个相应的站点。
订购 tm.loc_stanox, tm.event_type之类的情况,比如'fixed%',然后是1 当tm.event_type喜欢'到达%'然后是2 当tm.event_type喜欢'离开%'然后3结束
我希望我有更多的样本数据来查看您所描述的真实场景,以便更好地协助。