Mat*_*att 2 sql sorting sql-order-by sql-server-2008
我有一个Stuyear,Name,Included和%3 + Levels的结果集,我正在尝试ORDER BY,以便结果集按字母顺序显示为英语,数学和所有其他主题.每个主题依次分为年组顺序.
这是我的代码:
ORDER BY CASE NAME
WHEN 'English' THEN 0
WHEN 'Mathematics' THEN 1
ELSE 2 END,
Stuyear DESC
Run Code Online (Sandbox Code Playgroud)
这导致了这个:

因此,排序的初始部分按预期工作,但之后英语和数学之后的科目不按我的要求排序.例如:
Stuyear name
11 English
10 English
9 English
11 Mathematics
10 Mathematics
9 Mathematics
11 Art & Design
10 Art & Design
9 Art & Design
...
Run Code Online (Sandbox Code Playgroud)
它应该是:
ORDER BY CASE NAME
WHEN 'English' THEN 0
WHEN 'Mathematics' THEN 1
ELSE 2 END,
NAME,
Stuyear DESC
Run Code Online (Sandbox Code Playgroud)
在你的情况下,你只是用英语和数学告诉它'ORDER BY'这个名字,然后是Stuyear.
所有其他"名字"将有2个ORDER BY clause,而你唯一告诉它的是Stuyear之后订购.这样它就不会知道如何对它们进行排序.
将"名称"列放在大小写之后,它将使其按预期执行.