我有以下场景:
我有一张支持票的单子
每个支持票证都有许多消息(带有自己的日期时间)
每张票都有一个状态(打开、客户响应、等待客户、关闭)
整个表应按虚构的优先级排序,这意味着:open
和customerResponded
具有相同的优先级,因此这些项按最新票证消息ASC的日期时间排序(最长的未接触票证应首先处理,因此在列表顶部)。waitingForCustomer
的优先级较低。因此,waitingForCustomer
的票子总是落后于状态为open
或customerResponded
的票子,并且这些票子是按日期时间描述排序的(因为客户从未回复的旧票子的相关性较小)。closed
的工作方式与waitingForCustomer
相同,但优先级更低,因此这些票位于列表的末尾。
所以,在我解释了这个场景之后,我有一个问题:
是否可以通过添加条件来实现类似的功能,或者是否有其他方法来实现?
编辑:
票证状态为整数(open=0,customerResponded=10,waitingForCustomer=20,closed=100)。
最佳答案
您可以在订单中使用case表达式,方法是:
ORDER BY status,
CASE WHEN status IN (0, 10) THEN Datetime END ASC,
CASE WHEN status IN (20, 100) THEN Datetime END DESC