我有一个数据表如下。我希望根据[Action]
获取每个[Sstage]
的{{1}}个[ID]
。
我试过了:[Time]
但它没有给我我想要的东西。有没有人有任何想法?
last(action)over intersect([id],[stage],[time])
答案 0 :(得分:4)
这个可能并不像大多数人那么明显。
我们必须了解Max([Time])
和[ID]
上[Stage]
的状态。您正在使用Last()
,但该方法是获取逻辑的最后一行。如果您的数据没有排序......那么这会产生不希望的结果。因此,请使用Max()
方法获取最新日期。
Max([Time]) OVER (Intersect([ID],[Stage]))
现在......这会将[Time]
放在您计算的列中...因为您需要相关的[Action]
,我们需要将其嵌套在IF()
语句中以查找[Action]
If([Time]=Max([Time]) OVER (Intersect([ID],[Stage])),[Action])
现在,这会在您计算的列中添加正确的[Action]
,但仅限于包含Max([Time])
的行。
最后一步是在[ID],[Stage]
分组中使用另外一个Over()
方法
First(If([Time]=Max([Time]) OVER (Intersect([ID],[Stage])),[Action])) OVER (Intersect([ID],[Stage]))