一、解释字段
- 对查询结果的解释分析(无解释,不查询)
- 在select执行之前,在临时表动态生成一个列;列中内容用于对临时表每一行数据进行解释分析;
- 解释数据来源:
1、来源于聚合函数
2、来源于独立子查询
3、来源于开发人员手动设置常量
4、来源于case…END语句
二、case…END 语句
- 目的是为临时表的每一行数据给出一个动态的分析结果;
- 1、case…END在select执行之前执行
- 2、case…END执行时遍历临时表的每一行数据,在遍历时为每一行数据提供一个动态解释内容
- 3、case…END执行完毕时,生成解释数据作为一个独立的列出现在临时表
1、case…END 区间判断
类似于if() ELSE if() ELSE :格式
SELECT (case
when 区间判断 then ‘解释数据’
when 区间判断 then ‘解释数据’
ELSE … END) AS 列名 FROM TABLE
例子:
SELECT doc_no, use_work_hour, (SELECT AVG(use_work_hour) FROM dispatch_list) AS avg_hour, (case
when use_work_hour<(SELECT AVG(use_work_hour) FROM dispatch_list) then '小于平均工时'
when use_work_hour>(SELECT AVG(use_work_hour) FROM dispatch_list) then '大于平均工时'
ELSE '等于平均工时' END ) AS 等级 FROM dispatch_list;
2、case…END 等值判断
类似于switch;格式:
SELECT (case 字段名称
when 值 then ‘解释数据’
when 值 then ‘解释数据’
ELSE … END) AS 列名 FROM TABLE
SELECT doc_no, use_work_hour, (case use_work_hour
when 2.2 then '2.2'
when 0.0 then '0.0'
ELSE '其他' END ) AS 等级 FROM dispatch_list;