样本数据
预期数据
需要在记录中的订单下追加交易,可以使用 来做到这一点string_agg
,现在我需要拆分订单,最大值为 10。也就是说,单个订单的数量不应超过 10 ,需要合并交易尽可能在单一命令下进行,修改命令越少越好。
例如:我可以组合 tradeid 11 和 12,运行总计为 9,但是当我组合 tradeid 13 时,它会变成 12(超过 10),因此需要采用单独的订单。
我的目标是对交易进行排名,以便我可以按 orderid 和排名进行分组以获得结果。使用 SQL Server 2016。
用于创建示例表的脚本。
create table #order
(
orderid varchar(100),
tradeid varchar(100),
quantity int
)
insert into #order (orderid, tradeid, quantity)
values
('a', 'a1', 5),
('a', 'a2', 4),
('a', 'a3', 3),
('a', 'a4', 12),
('b', 'b1', 9),
('b', 'b2', 8),
('b', 'b3', 7)
第二个例子
INSERT INTO @Test
(OrderID, TradeID, Qty)
VALUES ('a', 11, 5)
, ('a', 12, 4)
, ('a', 13, 3)
, ('a', 14, 5)
, ('a', 15, 1)
, ('b', 21, 9)
, ('b', 22, 8)
, ('b', 23, 7)
预期结果
实际上,最大数量约为 1000 个订单,每个订单 10 笔交易。一个好的近似解应该足够好。