例如我有兩筆金額
1. 3月1日,100
2. 3月2日,200
有1筆收款150
如何可以變成
1. 3月1日 100,100
2. 3月2日 200,50
.。。。。。
uj5u.com熱心網友回復:
這匹配有啥規則?我不能是75,75 或者10,140等等?還是收款是另外個表uj5u.com熱心網友回復:
收款是在另外一個表,規則就是按照日期順序下來,一直沖減到每一筆為0
uj5u.com熱心網友回復:
CREATE TABLE #T
(ID INT IDENTITY(1,1),
DT DATE,
AMOUNT INT)
INSERT INTO #T
SELECT '2021-03-01',80 UNION ALL
SELECT '2021-03-02',100 UNION ALL
SELECT '2021-03-03',200
DECLARE @RCV INT
SET @RCV=150
;WITH CTE_1
AS
(SELECT *,ROW_NUMBER() OVER (ORDER BY DT) AS RN FROM #T),
CTE_2
AS
(SELECT * FROM CTE_1 A
OUTER APPLY (SELECT SUM(AMOUNT) AS SUBTOTAL FROM CTE_1 WHERE RN<=A.RN) AS B)
SELECT ID,DT,AMOUNT,
CASE WHEN SUBTOTAL<=@RCV THEN AMOUNT
WHEN SUBTOTAL>@RCV AND SUBTOTAL-AMOUNT<=@RCV THEN @RCV+AMOUNT-SUBTOTAL
ELSE 0 END AS ALLOCATE_AMOUNT
FROM CTE_2
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/270124.html
標籤:基礎類
