在this SQLFiddle中,您可能会找到我正在处理的查询。我有一个数据库表,用于保存用户登录和退出电话的事件。
我有一个查询,基本上,只有当它被虚拟“记录”时才选择代理,但在记录事件中,您可能有其他状态,例如正在谈话或处于管理时间。
我想要实现的是获取已登录代理的最新状态。
请注意,无法记录,然后有另一个与记录状态相关的状态。
答案 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;