我们说我有以下专栏A:
------
| A |
------
| 11 |
------
| 0 |
------
| 0 |
------
| 5 |
------
| 0 |
------
| 0 |
------
| 2 |
------
我想要做的是创建一个新的列B,它唯一地标识一个特定的0组。所以像这样:
------------
| A | B |
------------
| 11 | null|
------------
| 0 | 1 |
------------
| 0 | 1 |
------------
| 5 | null|
------------
| 0 | 2 |
------------
| 0 | 2 |
------------
| 2 | null|
------------
我需要这样做的原因是因为我需要获取最后一组数据(在这种情况下,它将是组' 2')。
这可以在Spotfire中使用吗?
答案 0 :(得分:0)
你可以稍微分解一下。
1-计算行ID [ROW]
的列RowId()
2-计算一列以确定给定行是否在0的组中(当前行= 0且前一行或下一行= 0)[IN GROUP?]
case when ([A]=0) and ((First([A]) OVER (Previous([ROW]))=0) or (First([A]) OVER (next([ROW]))=0)) then True ELSE False END
3-计算一个列,该列累计计算不在组中的行[#NotInGroup]
Count(If(not [IN GROUP?],1)) OVER (AllPrevious([ROW]))
4-通过排名[#NotInGroup]计算你[B]列,其中[IN GROUP?] = TRUE
case when [IN GROUP?] then DenseRank([#NotInGroup]) end