【发布时间】:2015-01-26 19:42:16
【问题描述】:
我有一个场景,我有两个表:
CREATE TABLE #TableA (payee_ID int, NetAmount decimal(9,2))
INSERT INTO #tableA (Payee_ID,NetAmount)
VALUES (2408332,1539.18)
CREATE TABLE #TableB (Payee_ID int,Priority int,formatTag char(1), Rate decimal(5,2), Netamount decimal(9,2), dedicatedAmt decimal(9,2))
INSERT INTO #TableB (Payee_ID, Priority, FormatTag, Rate)
VALUES
(2408332, 1, ‘F’, 500.00),
(2408332, 2, ‘P’, 0.25),
(2408332, 3, ‘P’, 0.25),
(2408332, 4, ‘F’, 100.00),
(2408332, 5, ‘P’, 1.00)
其中 FormatTag 是统一费率或百分比。
现在我想通过启动此收款人的 priority1 来填充 NetAmount 和专用 Amount。
他的NetAmount 优先级1 将是表A 中的net amount 总数。如果formattag 是Flat rate,则dedicated amount 将是rate。
而且,如果formattag 是百分比,那么它将是netAmount 总数的百分比。
我想降低优先级,并根据上一个优先级中使用的 dedicatedAmmt 继续减去 tableB 中的 netAmount:
Expected result:
Payee_ID Priority formatTag Rate Netamount dedicatedAmt
2408332 1 F 500.00 1539.18 500.00
2408332 2 P 0.25 1039.18 259.80
2408332 3 P 0.25 779.38 194.85
2408332 4 F 100.00 584.53 100.00
2408332 5 P 1.00 484.53 484.53
谢谢
【问题讨论】:
-
你应该用你正在使用的数据库标记这个问题。我相信这是一个难题,因为您必须使用递归 CTE 在 SQL 中解决它。
-
我已经更新了标签。谢谢
标签: sql-server sql-server-2008 common-table-expression recursive-query