Tsql 瀑布计算的递归CTE
我有一个表#BD,如下所示Tsql 瀑布计算的递归CTE,tsql,Tsql,我有一个表#BD,如下所示 Table: #BD Fac_id PayerType Current over_30 over_60 over_90 over_120 136 HOSPICE 0.1977 0.3095 0.3649 0.4688 0.1197 136 INSURANCE 0.0947 0.3502 0.7798 -0.5086 -0.245 136 MCAID 0.6115 0.7351 0.85
Table: #BD
Fac_id PayerType Current over_30 over_60 over_90 over_120
136 HOSPICE 0.1977 0.3095 0.3649 0.4688 0.1197
136 INSURANCE 0.0947 0.3502 0.7798 -0.5086 -0.245
136 MCAID 0.6115 0.7351 0.8535 0.6048 -1.8026
我试图得到如下所示的输出-基于此计算
临终关怀的“当前”列值(197.70)计算为1000*0.1977(来自表#BD)
临终关怀的over_30列值61.19=197.70*0.3095
临终关怀22.33的over_60列值=61.19*0.3649
1000
Fac_id PayerType Current over_30 over_60 over_90 over_120
136 HOSPICE 197.70 61.19 22.33 10.47 1.25
136 INSURANCE 94.70 33.16 25.86 (13.15) 3.22
136 MCAID 611.50 449.51 383.66 232.04 (418.27)
使用递归CTE可以做到这一点吗
或者,瀑布式计算的最佳方法是什么?您可以使用多个子查询;或者从这里开始采用更好的方法:
CREATE TABLE #BD
(Fac_id int, PayerType varchar(20), [Current] float, over_30 float, over_60 float, over_90 float, over_120 float)
insert into #BD
values
(136, 'HOSPICE', 0.1977, 0.3095, 0.3649, 0.4688, 0.1197),
(136, 'INSURANCE', 0.0947, 0.3502, 0.7798, -0.5086, -0.245),
(136, 'MCAID', 0.6115, 0.7351, 0.8535, 0.6048, -1.8026)
select * from #BD
SELECT fac_id, payerType, e.[current], e.over_30, e.over_60, e.over_90, (e.over_90 * over_120) AS over_120
FROM (select fac_id, payerType, c.[current], c.over_30, c.over_60, (c.over_60 * over_90) AS over_90, over_120
FROM (select fac_id, payerType, b.[current], b.over_30, (b.over_30 * over_60) AS over_60, b.over_90, b.over_120
FROM (SELECT fac_id, a.PayerType, a.[current], a.[current] * over_30 AS over_30, over_60, over_90, over_120
FROM (SELECT fac_id, #BD.payertype, over_30, ([Current] *1000) AS [current], over_60, over_90, over_120 FROM #BD) a) b) c) e