CASE WHEN函数在BO语义层设计中应用

  case when作为一个条件函数,虽然很简单,但是在语义层设计时用的很广范,下面做个简单的小结:
语法: case when 条件1 then 值1 else 值2 end
即:满足条件1时,为值1,否则为值2 end
case when 可以多重嵌套,实际工作中会经常用到。

1.在维度中应用:

场景:现要做一个关于部门费用的报表,其中只需展示‘销售部’,‘采购部’,‘财务部’的费用情况,其他的部门统一合并到‘其他’中。这是一个典型的case when函数在定义维度相关的物件中应用:
case when(xsflcj1.xsfl001_name='销售部') then '销售部' else
case when(xsflcj1.xsfl001_name='采购部') then '采购部' else
case when(xsflcj1.xsfl001_name='财务部') then '财务部' else '其他' end end end

2.在度量中使用

场景:现在要做一张‘部门A’销售达成分析的报表,要用到部门A的预测数据,但是‘部门A’的数据字段,并未在数据仓库单独给出。此时可以通过casewhen作为筛选条件,筛选出‘部门A’的数据。
SUM(CASE WHEN U_edf_sale_forecast.fcast_name='部门A' THEN U_edf_sale_forecast.fcast_JD ELSE 0 END)

你可能感兴趣的:(CASE WHEN函数在BO语义层设计中应用)