1

我有一个查询,但我想按以下方式订购数据:

  1. 状态(所以我有顶部状态 = 1 和底部状态 2 的记录)

  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

  3. 如果记录有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) 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 = 1除非另有订购completed_on DESC

4

1 回答 1

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
于 2013-06-14T19:32:22.823 回答