条件表达式

使用条件表达式可以创建转换值的表达式。

此部分中介绍的条件表达式是用于创建将值从一种形式转换成另一种形式的表达式的构建块。

遵循以下规则:

  • CASE 语句中,AND 的优先级高于 OR
  • 字符串必须放置在单引号中。
表达式 示例 说明 语法

CASE (If)

CASE

WHEN score-par < 0 THEN 'Under Par'

WHEN score-par = 0 THEN 'Par'

WHEN score-par = 1 THEN 'Bogey'

WHEN score-par = 2 THEN 'Double Bogey'

ELSE 'Triple Bogey or Worse'

END

计算各个 WHEN 条件;如果满足条件,则分配对应 THEN 表达式中的值。

如果不满足任何一个 WHEN 条件,则分配在 ELSE 表达式中指定的默认值。如果未指定 ELSE 表达式,系统将自动添加 ELSE NULL

:请参见“在分析和可视化中使用 CASE 语句的最佳实践”

CASE WHEN request_condition1 THEN expr1 ELSE expr2 END

CASE (Switch)

CASE Score-par

WHEN -5 THEN 'Birdie on Par 6'

WHEN -4 THEN 'Must be Tiger'

WHEN -3 THEN 'Three under par'

WHEN -2 THEN 'Two under par'

WHEN -1 THEN 'Birdie'

WHEN 0 THEN 'Par'

WHEN 1 THEN 'Bogey'

WHEN 2 THEN 'Double Bogey'

ELSE 'Triple Bogey or Worse'

END

也称为 CASE (Lookup)。先检查第一个表达式的值,然后再检查 WHEN 表达式。如果第一个表达式与任何 WHEN 表达式匹配,则会分配对应 THEN 表达式中的值。

如果与任何一个 WHEN 表达式都不匹配,则分配在 ELSE 表达式中指定的默认值。如果未指定 ELSE 表达式,系统将自动添加 ELSE NULL

如果第一个表达式与多个 WHEN 子句中的表达式匹配,将仅分配第一个匹配后面的表达式。

:请参见“在分析和可视化中使用 CASE 语句的最佳实践”

CASE expr1 WHEN expr2 THEN expr3 ELSE expr4 END

IfCase > ELSE

-

-

ELSE [expr]

IfCase > IFNULL

-

-

IFNULL([expr], [value])

IfCase > NULLIF

-

-

NULLIF([expr], [expr])

IfCase > WHEN

-

-

WHEN [Condition] THEN [expr]

IfCase > CASE

-

-

CASE WHEN [Condition] THEN [expr] END

SwitchCase > ELSE

-

-

ELSE [expr]

SwitchCase >IFNULL

-

-

IFNULL([expr], [value])

SwitchCase > NULLIF

-

-

NULLIF([expr], [expr])

SwitchCase > WHEN

-

-

WHEN [Condition] THEN [expr]

在分析和可视化中使用 CASE 语句的最佳实践

在报表和工作簿中使用 CASE 语句时,应考虑报表列和聚合顺序,因为这些会影响表达式和小计的计算方式。

  • 通常,在使用 CASE 表达式时,应确保表达式中使用的任何列都包含在报表中。

  • 如果聚合顺序很重要,则将报表聚合规则从“默认”更改为“总和”。
  • 如果必须先评估某个条件,然后再计算聚合(例如,如果筛选的列未显示在报表中),则使用 FILTER 函数。

示例

此示例使用 "Brand"、"Product_Type" 和 "Revenue" 的数据。
GUID-5837A210-154F-4FAC-922D-EBF0A21C349A-default.png 的说明如下
.png 的说明

为了应用条件以将 Camera 收入设置为 0,创建以下条件表达式:CASE WHEN Product_Type = ‘Camera’ THEN 0 ELSE Revenue END

从报表中排除了 Product_Type 时,没有数据可用于对表达式求值,因为它包含 Product_Type,结果如下:
GUID-22873F41-3679-45DF-821D-4167594FE069-default.png 的说明如下
.png 的说明

通过将 PRODUCT_TYPE 添加到报表并将报表聚合设置为 SUM,在计算基本级别值后聚合结果:
GUID-0BEEE7E1-73CE-4BAA-98A2-683830E18E12-default.png 的说明如下
.png 的说明

替代使用 CASE 的方式是使用筛选器表达式:FILTER(Revenue using Product_Type != ‘Camera’)。表达式独立于报表列进行计算,并且在计算后应用聚合:
GUID-F428B1A7-A9FF-425B-80F1-BB709769CE5C-default.png 的说明如下
.png 的说明