sql-server - 使用 CASE WHEN 时 ORDER BY 不工作,但没有它工作?
问题描述
我有以下选择语句,我试图以特定方式对结果进行排序,特别是部门的层次结构。但是,当我添加案例时,我的 ORDER BY 停止工作并给我一个错误:
如果语句包含 UNION、INTERSECT 或 EXCEPT 运算符,则 ORDER BY 项必须出现在选择列表中。
我不知道为什么会这样,因为我在每个 SELECT 语句中都选择了所有内容。
Select * FROM AccountAdminTable Where CollegeCode = 'A10' AND AdminLevel LIKE 'Account Administrator'
Union
Select * FROM AccountAdminTable Where CollegeCode = 'A10' AND AdminLevel LIKE 'Department Head/Director'
Union
Select * FROM AccountAdminTable Where CollegeCode = 'A10' AND AdminLevel LIKE 'Dean/Vice President'
Order By AdminLevel ASC
这不起作用:
Select * FROM AccountAdminTable Where CollegeCode = 'A' AND AdminLevel LIKE 'Account Administrator'
Union
Select * FROM AccountAdminTable Where CollegeCode = 'A' AND AdminLevel LIKE 'Department Head/Director'
Union
Select * FROM AccountAdminTable Where CollegeCode = 'A' AND AdminLevel LIKE 'Dean/Vice President'
Order By Case
When AdminLevel = 'Account Administrator' Then 1
When AdminLevel = 'Department Head/Director' Then 2
When AdminLevel = 'Dean/Vice President' Then 3
Else 4 End ASC
任何帮助是极大的赞赏!下面是一些示例数据。
College Code| AdminLevel | Name
A | Account Administrator | Bob
A | Department Head/Director | Tim
A | Dean/Vice President | Jeff
B | Account Administrator | Gary
B | Department Head/Director | Phil
B | Dean/Vice President | John
C | Account Administrator | Bill
C | Account Administrator | Larry
解决方案
你知道,你真的不需要在这里使用 UNION。由于您的所有 SELECTS 都来自同一个表,您可以这样做(注意,下面我的伪代码中使用的缩写。显然,在您的代码中使用正确的值):
Select * FROM AccountAdminTable
Where CollegeCode = 'A'
AND AdminLevel IN ('Account Administrator','Dept HD','Dean/VP')
ORDER BY CASE {Your CASE Expression}
推荐阅读
- matlab - 是否可以使用伪随机生成器生成零?
- c++ - 我不能在 C++ 中调用 bool 函数(关闭)
- python-3.x - 我想知道如何使用库统计信息从对象列表中访问数据以获取平均值、中位数和众数
- javascript - 在正则表达式中查找唯一值的问题
- oracle - 如何在 ORACLE 中对 DATE FORMAT 进行约束
- javascript - 是否可以将所有浏览器控制台消息/错误通过管道传输到远程机器?
- java - 为什么没有从这个 Java 流中过滤出空字符串?
- javascript - 如何存储和检索从 Firebase 到应用程序的 URL
- typescript - 如何使用 Object.fromEntries 将 js Map 转换为 typescript 中的对象
- jenkins - Jenkins Blue Ocean 在参数化构建中使用凭证