我有以下场景:
我有一张支持票的单子
每个支持票证都有许多消息(带有自己的日期时间)
每张票都有一个状态(打开、客户响应、等待客户、关闭)
整个表应按虚构的优先级排序,这意味着:
opencustomerResponded具有相同的优先级,因此这些项按最新票证消息ASC的日期时间排序(最长的未接触票证应首先处理,因此在列表顶部)。
waitingForCustomer的优先级较低。因此,waitingForCustomer的票子总是落后于状态为opencustomerResponded的票子,并且这些票子是按日期时间描述排序的(因为客户从未回复的旧票子的相关性较小)。
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

10-05 22:07