我有一个查询,但我想按以下顺序排序数据:
状态(所以我在顶部有状态= 1,在底部有状态2的记录)
如果记录有status = 1
,则按以下顺序排列
a)CASE WHEN i.assigned_to = '.USER_ID.' THEN 0 ELSE 1 END
b)CASE WHEN (i.approved_by > 0 OR i.approved_on IS NOT NULL) THEN 0 ELSE 1 END
c)i.priority DESC
d)i.created_on ASC
如果记录有status = 2
,则按completed_on DESC
这是我目前的语法,但我无法弄清楚如何拆分订单
ORDER BY
i.status ASC,
CASE WHEN i.assigned_to = '.USER_ID.' THEN 0 ELSE 1 END,
CASE WHEN (i.approved_by > 0 OR i.approved_on IS NOT NULL) THEN 0 ELSE 1 END,
i.priority DESC,
i.created_on ASC
我的查询目前按顺序排列所有记录 a)当i.assigned_to ='。USER_ID时的情况。然后0结束1结束 b)(CASE WHEN(i.approved_by> 0或i.approved_on IS NOT NULL)那么0 ELSE 1 END) c)i.priority DESC d)i.created_on ASC
并且我希望它只有在status = 1
按completed_on DESC
答案 0 :(得分:0)
尝试:
ORDER BY
i.status ASC,
CASE WHEN i.assigned_to = '.USER_ID.' and i.status = 1 THEN 0 ELSE 1 END,
CASE WHEN (i.approved_by > 0 OR i.approved_on IS NOT NULL) and i.status = 1
THEN 0 ELSE 1 END,
CASE WHEN i.status = 1 THEN i.priority END DESC,
CASE WHEN i.status = 1 THEN i.created_on END ASC,
CASE WHEN i.status = 2 THEN i.completed_on END DESC