• class11_创建新的输出字段P2


    创建新的输出字段2

    CASE WHEN 逻辑转换

    创建更复杂的输出字段

    例如:

    如何根据买入数量,区分大单、中单、小单

    交易数量类型
    [3000, +∞) 大单
    (300,3000) 中单
    (0,300] 小单

    使用关键字:CASE WHEN

    SELECT volume,
    CASE WHEN volume >= 3000 THEN '大单'
        WHEN volume > 300 AND volume < 3000 THEN '中单'
        WHEN volume <= 300 THEN '小单'
    END//CASE 一定要用END来结尾
    FROM t_stock_trans_dtl
    WHERE opt_typ = '买入';

    # 也可以这样写:
    SELECT volume,
    CASE WHEN volume >= 3000 THEN '大单'
        WHEN volume > 300 AND volume < 3000 THEN '中单'
        ELSE '小单'
    END//CASE 一定要用END来结尾
    FROM t_stock_trans_dtl
    WHERE opt_typ = '买入';
    CASE WHEN 语法一:
    CASE WHEN 条件表达式1 THEN 结果表达式1
    WHEN 条件表达式2 THEN 结果表达式2
    ……
    WHEN 条件表达式N THEN 结果表达式N
    [ELSE ELSE条件表达式]
    END
    #没有ELSE部分时,如果所有条件表达式都不满足,则返回NULL。
    #每一个CASE WHEN都应该有ELSE分支!!!

    又例如:

    对于买入的交易,交易数量为正数,而卖出的交易,交易数量为负数。这就导致交易金额(交易价格*交易数量)的返回值有正有负。如何根据交易类型做转换,交易金额全部返回正数?

    交易类型返回交易金额
    买入 交易价格*交易数量
    卖出 0-交易价格*交易数量
    # 语法一
    SELECT opt_typ,opt_tm,volume,
    CASE WHEN opt_typ = '买入' THEN price*volume    
        WHEN opt_typ = '卖出' THEN 0 - price*volume
        ELSE '其他'
    END as '交易总额'
    FROM t_stock_trans_dtl;
    # 语法二
    SELECT opt_typ,opt_tm,volume,
    CASE opt_typ
    WHEN  '买入' THEN price*volume    
        WHEN  '卖出' THEN 0 - price*volume
        ELSE '其他'
    END as '交易总额'
    FROM t_stock_trans_dtl;
    CASE WHEN 语法二:
    CASE 条件表达式
    WHEN 匹配表达式1 THEN 结果表达式1
    WHEN 匹配表达式2 THEN 结果表达式2
    ……
    WHEN 匹配表达式N THEN 结果表达式N
    [ELSE ELSE表达式]
    END
    #适用于条件表达式的结果,是一个可穷举的列表,结果是一个确定的值
    #但不适用于条件表达式的结果是一个范围的情况

    【注意:】

    • CASE WHEN:满足当前条件后,只执行当前的THEN便结束了

    • 两种CASE WHEN的语法均可嵌套操作,但不推荐

    • 建议最多嵌套两层并使用括号格式化SQL语句

    # 用查询结果创建临时表:
    CREATE TEMPORARY TABLE 临时表名 AS
    (
       SELECT *  FROM 旧的表名
    );

     

  • 相关阅读:
    一步步打造QQ群发消息群发器
    正确理解IEnumerable和IQueryable两接口的区别
    分享破解公众号裂变涨粉工具、吸粉方案。
    快40岁了,我还要不要继续写代码呢?
    精准营销、批量提取QQ群成员号码
    分享一个公众号h5裂变吸粉源码工具
    C#(.NET) HMAC SHA256实现
    mybatis的<if>标签,<foreach>标签,<collection>标签,<association>标签以及useGeneratedKeys用法
    springBoot解决跨域问题
    springBoot实现文件上传与下载
  • 原文地址:https://www.cnblogs.com/77-is-here/p/12800624.html
Copyright © 2020-2023  润新知