【SQL】CASE与DECODE

来源:互联网 发布:儿童牙刷推荐 知乎 编辑:程序博客网 时间:2024/06/09 04:31
1. case..when case..when语句用于按照条件返回查询结果,如当我们想把emp表的工资按照多少分成几个不同的级别,并分别统计各个级别的员工数。SQL语句如下:
select (case
         when sal <= 1000 then
          '1'
         when sal > 1000 and sal <= 2000 then
          '2'
         when sal > 2000 and sal <= 3000 then
          '3'
         when sal > 3000 and sal <= 4000 then
          '4'
         else
          '5'
       end) as Levels,
       count(*)
  from emp
 group by (case
            when sal <= 1000 then
             '1'
            when sal > 1000 and sal <= 2000 then
             '2'
            when sal > 2000 and sal <= 3000 then
             '3'
            when sal > 3000 and sal <= 4000 then
             '4'
            else
             '5'
          end) order by levels;
其中,when后可直接跟确定的条件,也可以像上面一样跟表达式。当我们想要使用group..by分组时,要把case..when整个语句放在group by 子句中,不能使用如上面case..when语句的别名"Levels"。


2. decode函数
(1)decode(条件,值1,返回值1,值2,返回值2,...值n,返回值n,缺省值)
当条件等于值1,则返回值2;当条件等于值2,则返回值2...
(2)decode(字段或字段的运算,值1,值2,值3)

当字段或字段的运算等于值1,则返回值2,否则返回值3。

如:有表如下


我们想得到如下的查询结果:


SQL语句如下:

select country,decode(sex,'1','男','2','女') as sex,population from test;

0 0
原创粉丝点击