在IF / Case-when语句中使用OVER函数的行之间的差值为空

时间:2018-12-19 14:04:08

标签: spotfire

我有这些专栏:

产品,价格,日期

我还创建了一个“等级”-Rank([Product])-列,为每个元素分配一个ID。

我要计算的列是同一日期两种产品之间的价格差。

假设我要计算苹果和香蕉之间的差异,其中苹果排名为1,香蕉排名为2。

我发现这个表情

First([Price]) OVER (Intersect([Date], FirstNode([Rank]))) - First([Price]) OVER (Intersect([Date], Next(FirstNode([Rank]))))

我能够达到预期的结果,但是当我尝试将这样的表达式放入IF / Case语句中时,

If([Product]='Apples', First([Price]) OVER (Intersect([Date], FirstNode([Rank]))) - First([Price]) OVER (Intersect([Date], Next(FirstNode([Rank])))), null)

我只有一个空白列,我不知道为什么。 有人可以向我解释一下还是建议其他方法来获得相同的结果?实际上,我找到的唯一解决方案是为苹果的价格计算一个列,为香蕉的价格计算一个列,只有这样,我才能在If语句中计算这些值之间的差,但是为了得到1而做3个计算的列不是我所要做的想要。

0 个答案:

没有答案