2013-11-22 124 views
2

我有一個Stuyear,名稱,包含和%3 +級別的結果集,我試圖命令,以便結果集顯示爲英文,數學,然後按字母順序顯示所有其他主題。每個主題依次分爲年度組。SQL ORDER BY語句邏輯問題

這是我的代碼:

ORDER BY CASE NAME 
     WHEN 'English' THEN 0 
     WHEN 'Mathematics' THEN 1 
      ELSE 2 END, 
Stuyear DESC 

這是導致此:

enter image description here

所以排序的初始部分工作正常,但隨後英國後的受試者和數學不按我的要求排序。例如:

Stuyear name 
11   English 
10   English 
9   English 
11   Mathematics 
10   Mathematics 
9   Mathematics 
11   Art & Design 
10   Art & Design 
9   Art & Design 
... 

回答

8

它應該是:

ORDER BY CASE NAME 
    WHEN 'English' THEN 0 
    WHEN 'Mathematics' THEN 1 
     ELSE 2 END, 
    NAME, 
    Stuyear DESC 

在你的情況,你只在英語和數學它告訴給'ORDER BY」的名字,之後由Stuyear。

所有其他「名稱」將爲該ORDER BY clause 2,並且你告訴它的唯一的事情是由Stuyear命令之後。這樣它就不會知道如何對它們進行排序。

把名稱列放在案件後,它會使它做你期望的。