Hive 基本教程

Hive SQL

Hive 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/hive-case-when-and-or-nested-statements.html

Hive SQL 语句中 case when 多个条件及嵌套的用法

Hive 笔记 Hive 笔记


Hive SQL 语句中,case when 可以有多个条件的判断,也可以进行组合嵌套。

标准语法

case when 的完整语法如下:

CASE
  WHEN a THEN b
  WHEN c THEN d
  ELSE e 
END

CASEEND 可以看成是语句开启和关闭的标识,WHEN 后面跟着条件,与其对应的 THEN 表示结果,最后一个条件结果用 ELSE 收尾。

多个条件

case when 的所谓多个条件就是 when 的多个条件,主要通过 ANDOR 关键字进行,示例如下:

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 作为一个整体可以,嵌套在 THENELSE 里面。