我需要创建一个计算列,根据其他两列的值计算前一行值的差异。
例如。考虑4列,如下所示。 Col B和Col C有日期值,Col A作为一些唯一值,Col D将有一些数值用于计算所需的列,这样当Col B = Col C和Col D的相应值必须是取下并减去Col D值,直到下一次Col B = Col C出现。
表的图像(PS:我无法以可复制的方式复制整个表格,因为格式会变得混乱)
我需要输出如下:即当日期值相等时,[COL B] = [COL C](即20-12-2016 15:40),那么我必须考虑COL D的对应值并减去138,直到下一个类似的事件发生。下一个出现的值是12-01-2017 15:40,然后它应该减去161,这继续和它的动态。
请注意:对于[COL B] = [COL C]之前的值,那些相应的值应与COL D相同,或者如果COL C的值为NULL或BLank,那么它也应该像COL D一样突出显示在绿色。
我在spotfire中使用了以下代码
if([COL B] is Not NULL,If([COL B]=[COL C],First[COL D] - [COL D]),[COL D])
,但由于要减去的值是动态的,我无法实现它。 任何帮助表示赞赏
@ Ksp585:请在下面找到错误计算的屏幕截图:绿色链接后的下一个值应为751(2638-3389),而不是根据之前的计算(3389-22 = 3367)计算为3367错误:
答案 0 :(得分:2)
@Nischey Anand-请尝试以下解决方案。
第1步:添加'row_id'列
RowId()
第2步:使用以下自定义表达式
插入计算列If([Column C] is not null,Sum([Column D]) over ([row_id]) - first([Column D]) over ([Column C]),[Column D])
以下是最终输出:
希望这有帮助!
根据提供的其他详细信息更新答案:
使用以下自定义表达式添加计算列。
If(Sum(If([Column B]=[Column C],[Column D])) over ([Column C]) is not null,[Column D] - Sum(If([Column B]=[Column C],[Column D])) over ([Column C]),[Column D])
以下是更新的最终输出表:
希望这能解决你的问题!