ORDER By子句中的CASE表达式

日期: 2008-12-02 作者:Rudy Limeback翻译:April 来源:TechTarget中国 英文

问:前几天我阅读了一些有关在SELECT语句ORDER BY子句中用CASE表达式的一些指南。你能列举一些简单的例子解释一下吗?   答:在ORDER BY用CASE表达式是一种技巧,这种技巧能让我们在列表中的自然值自身不能满足任务时进行习惯性排序。我将列举出两个例子。   第一个例子所表达的情况就是当人力资源部想根据职位查看工资单的时候,首先要除开销售人员、其次就是IT职员、第三就是管理人员、最后是其他人,当然包括工资列表上的团队中的每个人。

  CASE表达式用来将职位“转化”成值满足sort sequence的需求。 SELECT position   &n……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

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

  你能理解了吗?

翻译

April
April

相关推荐