我正在尝试根据数量列总和不超过值10对行进行分组

时间:2018-06-19 20:52:28

标签: tsql

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

1 个答案:

答案 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
相关问题