SQL 2008自定义顺序

时间:2012-02-21 15:49:36

标签: sql sql-order-by

我有一张桌子,我正在尝试按2个字段排列,其中一个我想根据情况进行修改。

SELECT * FROM products WHERE disabled ='0'ORDER BY category,status

这样可行,直到状态具有某些值。 status直接来自xml,我们无法真正改变它。我们不知道它的价值。我们所知道的是,按照一定的顺序我们需要3个特定的术语,然后其余的按状态递增。

when status='1' we want it to be 1st;
when status='D' we want it to be 2nd
when status='2' we want it to be 3rd

然后其余按状态排序,因为它们带有不同的值..

示例输出:

category | status 
electronic | 1
electronic | D
electronic | 2
electronic | 9
misc | 1
misc | 2
misc | 8

1 个答案:

答案 0 :(得分:4)

试试这个:

SELECT * 
FROM products 
WHERE disabled='0' 
ORDER BY category, 
         CASE WHEN status = '1' THEN 1
         WHEN status = 'D' THEN 2
         WHEN status = '2' THEN 3
         ELSE 4 END, status