TSQL:对行进行分组的最佳方法,以使数量的总和不超过值10
ID | Qty | Grp
---------------
ID1 | 5 |
ID2 | 2 |
ID3 | 5 |
ID4 | 4 |
ID5 | 4 |
ID6 | 3 |
预期结果
ID | Qty | Grp
---------------
ID1 | 5 | 1
ID2 | 2 | 2
ID3 | 5 | 1
ID4 | 4 | 2
ID5 | 4 | 2
ID6 | 3 | 3
答案 0 :(得分:0)
您可以执行以下操作。语法可能需要一些小的调整。或者,如果性能存在问题,则可以使用CTE。
DECLARE gMax int;
SET gMax = 1;
DECLARE gTotal int;
SET gTotal = 0;
WHILE gMax < 100
BEGIN
WHILE gTotal < 10
BEGIN
UPDATE (select * from dbo.MyTable where [Qty] is not null)
SET [Grp] = gMax
SET gTotal = gTotal + [Qty]
END
SET gMax = gMax + 1
END