问:前几天我阅读了一些有关在SELECT语句ORDER BY子句中用CASE表达式的一些指南。你能列举一些简单的例子解释一下吗? 答:在ORDER BY用CASE表达式是一种技巧,这种技巧能让我们在列表中的自然值自身不能满足任务时进行习惯性排序。我将列举出两个例子。 第一个例子所表达的情况就是当人力资源部想根据职位查看工资单的时候,首先要除开销售人员、其次就是IT职员、第三就是管理人员、最后是其他人,当然包括工资列表上的团队中的每个人。
CASE表达式用来将职位“转化”成值满足sort sequence的需求。 SELECT position &n……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
问:前几天我阅读了一些有关在SELECT语句ORDER BY子句中用CASE表达式的一些指南。你能列举一些简单的例子解释一下吗?
答:在ORDER BY用CASE表达式是一种技巧,这种技巧能让我们在列表中的自然值自身不能满足任务时进行习惯性排序。我将列举出两个例子。
第一个例子所表达的情况就是当人力资源部想根据职位查看工资单的时候,首先要除开销售人员、其次就是IT职员、第三就是管理人员、最后是其他人,当然包括工资列表上的团队中的每个人。
CASE表达式用来将职位“转化”成值满足sort sequence的需求。
SELECT position , empno , salary FROM personnel ORDER BY CASE WHEN position = 'sales' THEN 1 WHEN position = 'it' THEN 2 WHEN position = 'mgmt' THEN 3 ELSE 4 END |
CASE表达式实际上在表中其他的列上创建了一个单独的附加列。CASE表达式还会更给每行计算附加列值。这个附加列还会对结果集进行排序,但是它并没有返回到不是结果集中(除非你在SELECT子句中还包括CASE表达式)。由于职位名称排序不正确,不是ASC也不是DESC或他们本身,所以我们还是需要CASE表达式。
第二个例子很相似:
ELECT position , empno , salary FROM personnel ORDER BY CASE WHEN position = 'sales' THEN 'Curly' WHEN position = 'it' THEN 'Larry' WHEN position = 'mgmt' THEN 'Moe' ELSE 'Shemp' END , salary DESC |
你能理解了吗?
翻译
相关推荐
-
使用SQL Server时必须注意的10个特性:在嵌套中使用ORDER BY
SQL Server在嵌套查询中并不支持ORDER BY。这一行为没有在标准中进行定义并且是特定于SQL Server的。
-
如何使用SQL CASE表达式
本文为专家对于有关MySQL的问题作出的回答,提问者想从表’y’中获取整数列’x’并得到以下结果……
-
如何用ORDER BY对SQL UNION查询进行排序
我有以下查询……,我怎样才能在同一个选择查询序列中获取结果而不是通过col1进行排序?例如,我需要结果中显示这样的顺序:c,a,d,b。
-
在SQL语句ORDER BY子句中用CASE表达式
我想在SQL语句ORDER BY子句中用CASE表达式,但是我又想通过多个列进行排序。但是在编辑时我却不断收到“找不到关键字”的错误信息……