根据聚合值条件标记行

Tag a row based on aggregate value condition

这是我的数据集,其中顺序是每个产品的修复顺序。

我想要的是这里的另一个专栏,比方说TagIDTagID 是一个 int 值,它将基于聚合计数列,如果它大于或等于 5,则按产品分组。

因此数据集将如下所示:

如何在 SQL 服务器中完成此操作?

提前致谢。

这需要递归 CTE。您已经有一个编号列,所以这很简单:

with cte as (
      select product, order, count, 1 as grp, count as s
      from t
      where order = 1
      union all
      select cte.product. t.order, t.count,
             (case when cte.s + t.count >= 5 then grp + 1 else grp end),
             (case when cte.s + t.count >= 5 then t.count else cte.s + t.count end)
      from cte join
           t
           on t.product = cte.product and t.order = cte.order + 1
     )
select *
from cte;