我的表格中有3列
现在我正按severity ASC created DESC status DESC
订购。这是行不通的。这就是我希望它被列出的方式。
答案 0 :(得分:5)
您可以使用case
订购这样的行:
select *
from YourTable
order by
case
when status = 'Incomplete' and severity = 'High' then 1
when status = 'Incomplete' and severity = 'Moderate' then 2
...
end
答案 1 :(得分:4)
与Andomar的解决方案一样,我会考虑使用适当的状态和严重性表。不是枚举。
你可以暗示从这些表的键中排序顺序,但我可能有一个“SortOrder”列供将来使用。然后你可以通过SortOrder加入表和订单。
无需在每个需要它的查询中重复CASE
编辑:简化Andomar的想法......
order by
case status
when 'Incomplete' then 1
when 'In Progress' then 2
when 'Completed' then 3
END,
case severity
when 'High' then 1
when 'Moderate' then 2
when 'Low' then 3
END
答案 2 :(得分:0)
您可以将状态和严重性存储为数字, 使用:
SELECT ... FROM ... ... ORDER BY STATUS [ASC/DESC], SEVERITY [ASC/DESC]
ASC或DESC取决于您选择的数字。
要将严重性和状态设置为文本,如果需要更多状态/严重性,可以使用IF / Switch或INNER JOIN