MySQL CASE语句实现合理分桶:I/OA事件隔离与EquipID老化计算求助
问题重发求助
本次重新提交问题寻求帮助,目前仍未找到可行的解决方案。
当前已经可以独立筛选出仅含“OA”的场景,并将其正确标记为NA,但遇到两个核心问题:
- 无法隔离仅含“I”的事件
- 无法正确计算同时存在I和OA事件的EquipID的老化时长
现有实现逻辑
当前使用的老化计算逻辑对仅含“I”的事件适配性良好,但始终无法正确隔离同时包含I、OA事件的EquipID,也无法获取两个事件的日期差值,对应SQL计算语句为:datediff(curdate(),concat(left(eventDateTime,4),'-',mid(eventDateTime,5,2),'-',mid(eventDateTime,7,2))) as age_in_depot
之前尝试按EquipID分组,但该操作只会返回一个eventDateTime结果,且始终为第一条记录的时间——对于同时包含“I”和“OA”的场景,仅能获取到“I”事件的eventDateTime。
目前也具备识别“I”和“OA”事件的逻辑,但该逻辑仅适用于将EquipmentID合并为单行的场景,这种合并方式会丢失计算这类EquipID老化时长所需的第二个eventDateTime条目,对应逻辑代码为:GROUP_CONCAT( DISTINCT StatusCD) as StatusCD
参考数据样例
查询返回的示例数据如下图所示:
如果能获得相关思路或解决方案将不胜感激。只要完成仅含“I”事件的标记与老化计算逻辑,就能最终完成正在为团队搭建的仪表板。提前致谢。
内容的提问来源于stack exchange,提问作者Venture-MTB
相关产品推荐
相关产品推荐

