Tsql 瀑布计算的递归CTE

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

我有一个表#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.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