zoukankan      html  css  js  c++  java
  • oracle:case when then else end

    ===================case when then else end 

    (CASE ETDL.ETDL_TYPE
    WHEN '00' THEN
    '安装'
    WHEN '01' THEN
    '维修'
    WHEN '02' THEN
    '拆旧'
    WHEN '03' THEN
    '测量'
    WHEN '04' THEN
    '维修+拆旧'
    WHEN '05' THEN
    '安装+拆旧'
    WHEN '06' THEN
    '上样'
    WHEN '07' THEN
    '铺贴指导'
    END) AS ETDL_TYPE, --服务类型

    --简单Case函数
    CASE sex
             WHEN '1' THEN '男'
             WHEN '2' THEN '女'
    ELSE '其他' END
    --Case搜索函数
    CASE WHEN sex = '1' THEN '男'
             WHEN sex = '2' THEN '女'
    ELSE '其他' END


    SELECT country 国家,
    SUM(CASE WHEN sex='1' THEN population ELSE '0' END) 男,
    SUM(CASE WHEN sex='2' THEN population ELSE '0' END) 女,
    SUM(population) 总人口
    FROM test_case
    GROUP BY country;

      效果如图:

    国家 女      |   总人口
    中国 340 260      |        600
    美国 45 55      | 100   
    加拿大 51 49        |100   
    英国 40 60        |  100  



    eg:统计人口

    SELECT  SUM(population),
            CASE country
                    WHEN '中国'     THEN '亚洲'
                    WHEN '印度'     THEN '亚洲'
                    WHEN '日本'     THEN '亚洲'
                    WHEN '美国'     THEN '北美洲'
                    WHEN '加拿大'  THEN '北美洲'
                    WHEN '墨西哥'  THEN '北美洲'
            ELSE '其他' END
    FROM    Table_A
    GROUP BY CASE country
                    WHEN '中国'     THEN '亚洲'
                    WHEN '印度'     THEN '亚洲'
                    WHEN '日本'     THEN '亚洲'
                    WHEN '美国'     THEN '北美洲'
                    WHEN '加拿大'  THEN '北美洲'
                    WHEN '墨西哥'  THEN '北美洲'
            ELSE '其他' END;

    Case函数不同于DECODE函数,在Case函数中,可以使用between,like,is null,in,exists等等。
    例如:有两个表,tbl_A,tbl_B,两个表中都有keyCol列。现在我们对两个表进行比较,tbl_A中的keyCol列的数据如果 在tbl_B的keyCol列的数据中可以找到, 返回结果'Matched',如果没有找到,返回结果'Unmatched'。

    --使用IN的时候:
    SELECT keyCol,
    CASE WHEN keyCol IN (SELECT keyCol FROM tbl_B)
    THEN 'Matched'
    ELSE 'Unmatched' END Label
    FRO tbl_A;
    --使用Exists的时候
    SELECT keyCol,
    CASE WHEN EXISTS (SELECT * FROM tbl_B WHERE tbl_A.keyCol=tbl_B.keyCol)
    THEN 'Matched' ELSE 'Unmatched' END Label
    FROM tbl_A;

    --相比较而言肯定使用第二种 exists 效率会更高。

    引用:http://www.cnblogs.com/prefect/p/5746624.html

    ======================  decode 

    DECODE(
    ETHC.ETHC_COST_CODE,
    'YCF',
    ETHC.ETHC_TOTAL_AMOUNT,
    '0') AS LONGDISTANCEMODEL_UNIT_PRICE, --远程费

  • 相关阅读:
    vscode 在linux中,切换语言模式快捷键
    转载大神的一篇文章----【如何选择开源许可证?】
    Kibana6.x.x——源码发布
    Kibana6.x.x——【Running "run:optimizeBuild" (run) task】出现警告信息
    linux系统为文件添加执行权限
    Kibana6.x.x——执行yarn build出现的警告信息记录
    Kibana6.x.x——导航权限控制入门
    poj 2187:Beauty Contest(计算几何,求凸包,最远点对)
    poj 2386:Lake Counting(简单DFS深搜)
    蓝桥杯 第三届C/C++预赛真题(10) 取球游戏(博弈)
  • 原文地址:https://www.cnblogs.com/21heshang/p/6585918.html
Copyright © 2011-2022 走看看