如何解决通过检查几个空值来订购
我有一个带有以下时间戳列的表:
表格:警报
已创建,已确认,已忽略
如果AcknowledgedDate和IgnoredDate均为空,则警报被认为是活动的。如果AcknowledgedDate不为null但IgnoredDate为null,则认为已确认。如果IgnoredDate不为null,则认为已忽略。
对于我的查询,我需要按照活动->确认->忽略->创建的顺序来订购警报。因此,除了在比较两个处于活动状态或已确认或忽略状态的警报时使用的CreatedOn,我不在乎任何实际日期。
SELECT alrt FROM ALERT alrt ORDER BY ???
解决方法
如果我理解正确,则可以使用case
逻辑:
order by (case when AcknowledgedDate is null and IgnoredDate then 1
when IgnoredDate is null then 2
else 3
end)
,
根据您的条件,这样做:
SELECT * FROM ALERT
ORDER BY
AcknowledgedDate IS NULL AND IgnoredDate IS NULL DESC,AcknowledgedDate IS NOT NULL AND IgnoredDate IS NULL DESC,IgnoredDate IS NOT NULL DESC
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。