Hive SQL 语句中,case when 可以有多个条件的判断,也可以进行组合嵌套。
标准语法
case when 的完整语法如下:
CASE
WHEN a THEN b
WHEN c THEN d
ELSE e
END
CASE
和 END
可以看成是语句开启和关闭的标识,WHEN
后面跟着条件,与其对应的 THEN
表示结果,最后一个条件结果用 ELSE
收尾。
多个条件
case when 的所谓多个条件就是 when 的多个条件,主要通过 AND
和 OR
关键字进行,示例如下:
CASE
WHEN a AND b THEN c
WHEN d OR e THEN f
ELSE g
END
嵌套语句
case when 也可以进行嵌套组合,有了上述标准语法做基础,嵌套写法不难理解。
这里以女子是否选择相亲的决策树为例:
select
CASE
WHEN age<30 THEN
CASE
WHEN look = 'handsome' OR look = 'normal' THEN
CASE
WHEN salary = 'high' THEN 'meeting'
WHEN salary = 'low' THEN 'no meeting'
ELSE
CASE
WHEN job = 'official' THEN 'meeting'
ELSE 'no meeting'
END
END
ELSE 'no meeting'
END
ELSE 'no meeting'
END
as meet_info
从上例可以看出,CASE ... END
作为一个整体可以,嵌套在 THEN
或 ELSE
里面。