zoukankan      html  css  js  c++  java
  • sql系列之001_{case~~when~~ then}

    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


  • 相关阅读:
    malloc/free和new/delete的区别
    Vim Skills——Windows利用Vundle和Github进行Vim配置和插件的同步
    selenium自学笔记---ecshop购买脚本 xpath定位元素(下拉框,单选框)
    python基础09--闭包,装饰器
    python基础08--迭代器,生成器
    python基础07--函数
    python基础06--文件操作
    python基础05--深浅copy, set,bytes
    python基础04--list,cou,dict
    python基础03--int,bool,str
  • 原文地址:https://www.cnblogs.com/zjflove/p/2923825.html
Copyright © 2011-2022 走看看