Case
返回不同情况中第一个满足逻辑表达式(case_eperand)对应的值(result)。
语法一
CASE case_eperand
WHEN when_operand THEN result
WHEN when_operand THEN result......
ELSE result END
参数一
case_eperand | 整个函数的逻辑表达式 |
WHEN when_operand THEN result | 表达式为0至多个,代表不同情况; |
when_operand | 是当前情况下的值, |
Result | 是符合当前情况下的取值; |
ELSE | 情况可以省略 |
示例一
with member [期间].[x] as Case 2*3 WHEN 1 THEN 1 WHEN 2 THEN 2 WHEN 6 THEN 6 ELSE 100 END
select {[期间].[x]} on rows, {[版本].&[50672]} on columns from [模型一]
where ([组织].&[50585],[场景].&[50685],[产品].&[50688],[科目].&[50220])
运行结果:
产品 : 不分
场景 : 累计预算
科目 : 办公费
组织 : 开发2部
期间 | 年初编报01版本 |
x | 6.00 |
由于逻辑表达式的值为6,第三种情况刚好符合逻辑表达式的值,所以返回第三种情况对应的取值6。
语法二
CASE
WHEN search_condition THEN result
WHEN search_condition THEN result
ELSE result END
参数二
WHEN search_condition THEN result | 表达式为0至多个,代表不同情况; |
search_condition | 是当前情况下的逻辑表达式, |
Result | 是符合当前情况下逻辑表达式为真的取值; |
ELSE | 情况可以省略 |
示例二
with member [期间].[x] as Case WHEN count([期间].[2023年].Children)>10 THEN 10 WHEN count([期间].[2023年].Children)>2 THEN 2 WHEN count([期间].[2023年].Children)>3 THEN 3 ELSE 100 END
select {[期间].[x]} on rows, {[版本].&[50672]} on columns from [模型一]
where ([组织].&[50585],[场景].&[50685],[产品].&[50688],[科目].&[50220])
运行结果:
产品 : 不分
场景 : 累计预算
科目 : 办公费
组织 : 开发2部
期间 | 年初编报01版本 |
x | 2.00 |
由于[2023年]的子项有4个,所以第二种情况是第一个满足条件的,返回情况二THEN后面的值2。