Dados de amostra
Dados esperados
Preciso anexar negociações sob um pedido em um registro, consegui fazer isso usando string_agg
, agora preciso dividir os pedidos com valor máximo de 10. Ou seja, a quantidade para o pedido único não deve ultrapassar 10, preciso combinar negócios sob um único pedido, tanto quanto possível, pois são desejáveis menos pedidos alterados.
Por exemplo: posso combinar o tradeid 11 e 12, o total acumulado é 9, mas quando combino o tradeid 13 ele se torna 12 (excede 10), então isso precisa estar em uma ordem separada.
Pretendo classificar as negociações para poder agrupar por orderid e classificar para obter o resultado. Usando o SQL Server 2016.
Script para criar a tabela de amostra.
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)
Segundo exemplo
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)
resultado esperado
Na realidade, o máximo seria cerca de 1.000 pedidos em 10 negociações por pedido. Uma boa solução aproximada deve ser suficiente.