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


  • 相关阅读:
    仿蘑菇街界面(2)
    centos安装qt开发环境
    ubuntu14.04 qt4 C++开发环境搭建
    ubuntu qt X11开发环境
    ubuntu14.04 qt4开发环境搭建(vnc use gnome)
    ubuntu gnome vnc
    ubuntu 14.04 vnc use gnome(ubuntu14.04 gnome for vnc4server)
    C++面向对象编程初步
    openStack CI(Continuous interaction)/CD(Continuous delivery) Gerrit/Jenkins安装及集成,插件配置
    shell programs
  • 原文地址:https://www.cnblogs.com/zjflove/p/2923825.html
Copyright © 2011-2022 走看看