繁体   English   中英

T-SQL 为组每 x 条记录重置序列

[英]T-SQL reset sequence every x records for group

我正在寻找创建一个数据集,将客户分类为每种客户类型的特定组 - 我想应用一个编号系统,从每种客户类型的 1 开始,并为客户类型每 3 条记录分组

在下面的示例中,我可以看到AUTO客户类型有 4 组(3 x 3 和 1 x 2), BUIL有 1 组 3, MANU有 3 组(2 x 3 和 1 x 1)等等。

样本

我最初查看的是 NTILE,但我的组每个客户类型的行数不同,因此无法动态更改 NTILE 值 AFAIK。

任何帮助将不胜感激。

提前致谢

Wildshark-英国

假设您有一个指定排序的列,您可以只使用row_number()和算术:

select t.*,
       ceiling(row_number() over (partition by customer_type order by <ordering col>) / 3.0)
from t;

如果您不关心排序而只关心分组为三元组,则可以使用order by (select null)

最后,SQL 服务器支持可更新的 CTE 和子查询,因此您也可以在update中使用此查询。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM