• 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


  • 相关阅读:
    4星|《门口的野蛮人2》:美国宝万之争专业户KKR公司的疯狂借债收购史
    3星|《多样性红利》:10年旧书,《群体智慧》的注解版,习题集性质
    4星|《财经》2018年第26期:全国流感疫苗供应不足
    互联网行业的左其盛好评书21本
    华为相关6本书,都不值得读
    3.5星|《产品觉醒》:针对互联网商业和产品的评论与思考,有实践有洞察
    3星|埃森哲《机器与人》:基于人工智能新闻甚至宣传稿的畅想与分析
    3星|《华为终端战略》:华为手机大事记,企业宣传稿风格
    2.5星|《极简企业史》:资料汇编,一大半内容是相关图书简介
    AspNet Core 发布到Linux系统和发布IIS 注意项
  • 原文地址:https://www.cnblogs.com/zjflove/p/2923825.html
Copyright © 2020-2023  润新知