我有Stuyear,Name,Included和%3 + Levels的结果集,我正在尝试ORDER BY,以便结果集按字母顺序显示为英语,数学和所有其他主题。每个科目依次分为年组顺序。
这是我的代码:
ORDER BY CASE NAME
WHEN 'English' THEN 0
WHEN 'Mathematics' THEN 1
ELSE 2 END,
Stuyear DESC
这导致了这个:
因此,排序的初始部分按预期工作,但之后英语和数学之后的科目不按我的要求排序。例如:
Stuyear name
11 English
10 English
9 English
11 Mathematics
10 Mathematics
9 Mathematics
11 Art & Design
10 Art & Design
9 Art & Design
...
答案 0 :(得分: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之后订购。这样它就不会知道如何对它们进行排序。
将“名称”列放在案例之后,它将使其按预期执行。