博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sql系列之001_{case~~when~~ then}
阅读量:4311 次
发布时间:2019-06-06

本文共 1788 字,大约阅读时间需要 5 分钟。

1、等值判断,相当于switch case

CASE expression

 WHEN value1 THEN returnvalue1
 WHEN value2 THEN returnvalue2
 WHEN value3 THEN returnvalue3
ELSE defaultreturnvalue
END
例如:
          case level
          when 1 then '大叔'
          when 2 then '二叔'
          when 3 then '小叔'
    end

相当于Switch,只能等值判断。

 

       
select username,叔级别=(  
  1.     case level  
  2.         when 1 then '大叔'  
  3.         when 2 then '二叔'  
  4.         when 3 then '小叔'  
  5.     end  
  6. )     
  7. from userinfo  
select username,叔级别=(	case level		when 1 then '大叔'		when 2 then '二叔'		when 3 then '小叔'	end)	from userinfo

其结果为:~~~

 

2、区间判断

CASE

WHEN condition1 THEN returnvalue1
WHEN condition 2 THEN returnvalue2
WHEN condition 3 THEN returnvalue3
ELSE defaultreturnvalue
END
相当于if…else if…else….(可以进行区间判断)
 
注意:then后面返回的数据类型要一致, returnvalue1、 returnvalue2、 returnvalue3的数据类型必须一致。

    

  1. select username,年纪=(      
  2.     case  
  3.         when age between 28 and 30 then '大叔'  
  4.         when age between 25 and 27 then '大青年'  
  5.         when age between 20 and 24 then '骚年'  
  6.          
  7.         when age < 20 then '小屁孩'  
  8.         else 'baby'  
  9.     end  
  10. )  
  11. from userinfo2  
select username,年纪=(        case        when age between 28 and 30 then '大叔'        when age between 25 and 27 then '大青年'        when age between 20 and 24 then '骚年'               when age < 20 then '小屁孩'        else 'baby'    end)from userinfo2

 

3、实际案例扯淡

     1、一般论坛中的用户等级

          论坛中用户的等

          case BBSlevel
             when 1  then '骨灰'
             when 2  then '大虾'
            when  3  then '菜鸟'
        end

    2、订单表中,统计每个销售员的总销售金额,列出销售员名、总销售金额、称号(>10W金牌,>5W银牌,>1W铜牌,否则普通)

    3、电商用户 根据用户消费总额 予以不同的等级

    4、游戏行业 玩家等级

 

 

单号   金额

RMB1 10
RMB2   20
RMB3    -30
RMB4    -10
将上面的表输出为如下的格式:
单号   收入   支出
RMB1     10       0
RMB2     20       0
RMB3      0        30
RMB4    0        10

 

  1. select number,  
  2. (  
  3.     case   
  4.         when amount > 0 then amount  
  5.         else 0  
  6.     end  
  7. ) 收入,  
  8. (  
  9.     case   
  10.         when amount < 0 then abs(amount)  
  11.         else 0  
  12.     end   
  13. ) 支出  
  14. from test  
select number,(	case 		when amount > 0 then amount		else 0	end) 收入,(	case 		when amount < 0 then abs(amount)		else 0	end ) 支出from test

 

 

转载于:https://www.cnblogs.com/zjflove/archive/2013/02/23/2923825.html

你可能感兴趣的文章
三、回归问题与应用
查看>>
第二届PHP全球开发者大会(含大会的PPT)
查看>>
5.23BOM
查看>>
SVN使用教程
查看>>
献给初学者:谈谈如何学习Linux操作系统
查看>>
vb中的反正弦函数
查看>>
Match:Keywords Search(AC自动机模板)(HDU 2222)
查看>>
ASM:《X86汇编语言-从实模式到保护模式》第16章:Intel处理器的分页机制和动态页面分配...
查看>>
CORS’s source, principle and implementation
查看>>
分割字符串
查看>>
选择排序
查看>>
线性表 - 公式化描述实现线性表
查看>>
javaweb搭建云服务器环境
查看>>
referer——防盗链
查看>>
有callback的回调中,不能直接更新UI的解决办法
查看>>
HDU 4123(树上任意点到其他点的最远距离,rmq
查看>>
Redux在React中的使用
查看>>
Linux目录结构
查看>>
玲珑杯#2.5 A-B
查看>>
Educational Codeforces Round 36 (Rated for Div. 2) E. Physical Education Lessons
查看>>