在某些条件下选择最后一个事件

时间:2012-03-07 12:52:55

标签: mysql

this SQLFiddle中,您可能会找到我正在处理的查询。我有一个数据库表,用于保存用户登录和退出电话的事件。

我有一个查询,基本上,只有当它被虚拟“记录”时才选择代理,但在记录事件中,您可能有其他状态,例如正在谈话或处于管理时间。

我想要实现的是获取已登录代理的最新状态。

请注意,无法记录,然后有另一个与记录状态相关的状态。

1 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

SELECT a.* 
FROM eventos_centralita a
LEFT JOIN eventos_centralita b 
  ON b.codAgente = a.codAgente 
  AND b.evento = 'Deslogado'
  AND b.fechaHora > a.fechaHora
LEFT JOIN eventos_centralita c
  ON c.codAgente = a.codAgente 
  AND c.fechaHora > a.fechaHora
WHERE b.idEvent IS NULL AND c.idEvent IS NULL AND a.evento <> 'Deslogado' GROUP BY a.codAgente;