Надеюсь, вы сможете помочь.SQL Server 2012 Распределить сумму на основе приоритета и процента
Вот мой стол:
Declare @AmtToDistribute float = 500.00
DECLARE @TestTable TABLE(TempID INT IDENTITY(1, 1) NOT NULL,
VicID INT ,
VicOrderedAmt MONEY,
RemainingBalance MONEY,
DistPriority INT,
DistPercentOf DECIMAL(5, 2),
DistributionAmt MONEY
);
INSERT INTO @TestTable ([VicID], [VicOrderedAmt], [RemainingBalance], [DistPriority], [DistPercentOf], [DistributionAmt])
VALUES (2318, 5.00, 5.00, 1, 60.00, 0),
(2319, 50.00, 25, 1, 40.00, 0),
(2320, 500.00, 500.0, 2, 33.00, 0),
(2321, 500.00, 500.0, 2, 33.00, 0),
(2322, 500.00, 500.0, 2, 34.00, 0);
SELECT * FROM @TestTable;
Я пытаюсь найти запрос, который позволяет мне распределить сумму в долларах каждой строке в 1-й приоритет, пока эти значения не достигнет нуля и затем переходите к следующему приоритету, пока эти значения не достигнут нуля. Улов заключается в том, что сумма доллара должна распределяться на основе столбца DistPercentOf. Например, 2 строки в приоритете 1 разделяют сумму сначала, когда VicID получает 60% от суммы до тех пор, пока VicOrderedAmt не будет удовлетворен, тогда второй VicId получит 40% от суммы. После того, как были выполнены приоритеты 1, перейдите к Приоритету 2.
Я видел несколько сообщений, но они касаются только одного приоритета, и мне нужно заплатить один приоритет, прежде чем переходить к следующему.
Заранее спасибо.
Я думаю, что это работа для прикладного уровня, а не для базы данных. – cha
Непонятно с вопросом. Для первой записи вы хотите обновить DistributionAmt до 60% от 500, то есть 300, а VicOrderedAmt - 5 , следовательно, обновление до 5? Аналогично для 2-й записи 50 и 3-й записи 33% (500-5-50) = 146,85? –
@RajeshBhat, это правильно. cha, теперь у меня это как курсор, но он попадает в цикл в один момент, поэтому он будет работать на БД, просто нужно, чтобы это было правильно, чтобы заставить его работать. – qwerty1906