2012-02-21 28 views
1

我有一個表,我試圖安排的2個字段,其中我想改變的情況之一。自定義命令由SQL 2008

SELECT * FROM產品WHERE殘疾人= '0' ORDER BY類別,狀態

這工作正常,直到狀態具有一定的價值。狀態直接來自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 
+0

我看了他們所有,但沒有與之匹配完全符合下面的答案。 – 2012-02-21 16:05:36

回答

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 
+0

我錯過了,最後的狀態..謝謝:) – 2012-02-21 16:05:46