2017-06-22 62 views
0

我想写一个case语句,我想将列值分为4种情况。但只有1例创建 - “HV-HM”。代码是:Spotfire Case语句不起作用

case 
WHEN Sum([Sales])/UniqueCount([Quarter])>=${HighVolume} and Avg([Net 
Margin])>=${HighMargin} THEN "HV-HM" 
WHEN Sum([Sales])/UniqueCount([Quarter])>=${HighVolume} and (Avg([Net 
Margin])<${HighMargin}) and Avg([Net Margin])>${LosingMargin} THEN "HV-LM" 
WHEN Sum([Sales])/UniqueCount([Quarter])<${HighVolume} And Avg([Net Margin]) 
<${HighMargin} And Avg([Net Margin])>${LosingMargin} THEN "LV-LM" 
WHEN Avg([Net Margin])<=${LosingMargin} THEN "Losing" 
END as [Sector] 

任何人都可以解决这个问题吗?

+0

如果可能的话,你可以请张贴在基础表的一些虚拟值? – ksp585

回答

0

太长评论....

每个案例中的语句是唯一的,所以这意味着第一个“案例”是满足您的所有数据。既然你不认为情况不是这样,最好的办法是把它分解成计算列,这样你就可以看到这些值。为每个案例创建一个计算列。

对于这两种方法创建一个计算列:

Sum([Sales])/UniqueCount([Quarter]) 
Avg([Net Margin]) 

然后,您可以手动看看他们是否会高于或低于您的高和低保证金属性控制。

您也可以为每种情况下创建一个计算列:

case when Sum([Sales])/UniqueCount([Quarter])>=${HighVolume} and Avg([Net Margin])>=${HighMargin} then 1 end as [Test 1] 
case when Sum([Sales])/UniqueCount([Quarter])>=${HighVolume} and (Avg([Net Margin])<${HighMargin}) and Avg([Net Margin])>${LosingMargin} 1 end as [Test 2] 
etc... 
+0

其实我正在使用一个散点图,并试图用case语句将这四个类别的列分开。我试图创建单独的计算列,但仍然没有工作.. –

+0

创建单独的列的目的是测试逻辑。这些专栏的结果是什么?你有没有1列? – scsimon