db2 仅查找某个值的时间戳晚于另一个值的记录

u0njafvf  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(169)

希望我能正确表达这个问题
我有一个表,其中包含用户的ID号和一个包含“事件”的字段,如“已登录”、“做了X”、“做了Y”等。因此,一个用户ID在此表中可能有大量记录。每个记录都有一个关联的时间戳字段。
我尝试对此表进行查询,在此表中,我只能找到“Did X”的时间戳比“Did Y "的时间戳更近的用户ID。
有可能用户可以多次输入“Did X”或“Did Y”,但我只需要输入“Did X”的时间比输入“Did Y”的时间更近的用户ID。也有可能用户可能从未输入“Did Y”,但我要查找的用户ID至少总是包含“Did X”。
我已经尝试了各种各样的连接和自连接等等,但是到目前为止我还是很失败。感觉有一个简单的解决方案我只是忽略了。
我很感激这里的任何帮助。
编辑:下面评论中提供的这个链接或多或少为我解决了这个问题。https://dbfiddle.uk/?rdbms=db2_11.1&fiddle=263f8394751590ab0d440c53b09e573a

dluptydi

dluptydi1#

如果我没弄错的话......您可以获得执行了操作x的用户,但在执行了x后,同一用户不存在操作y

select * from tabla t1
where t1.action = "did X" 
and not exists (select * from tabla t2 where t2.userid = t.userid and t2.action = "did y" and t2.fecha > t1.Fecha)

我希望你是这个意思。

相关问题