You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过递归CTE实现基于前置值求和的AdjustedAllocation列计算

问题说明
  • 需创建名为AdjustedAllocation的新列,计算方式为:IncrementedSourceRatio 乘以(原始AllocationAmount减去该参与者所有前置AdjustedAllocation的总和)
  • 核心难点:计算时需引用同一列中已生成的前置计算值,且必须依赖所有前置结果才能得到正确值,示例表格最后一列是预期结果
  • 已尝试方案:使用过LAG()、SUM()、COALESCE()函数,添加ROW_NUMBER()及各类临时表,均未解决问题
  • 当前思路:已确认需要使用递归查询/CTE,但找到的示例过于简单,无法匹配需求,希望通过该问题的解决方案加深对CTE的理解

测试代码

IF OBJECT_ID('tempdb..#TEMP', 'u') IS NOT NULL DROP TABLE #TEMP
IF OBJECT_ID('tempdb..#TEMP2', 'u') IS NOT NULL DROP TABLE #TEMP2
GO

CREATE TABLE #TEMP
(
    PlanID NVARCHAR(10)
    ,EEID NVARCHAR(15)
    ,Ticker NVARCHAR(10)
    ,MarketValue MONEY
    ,TotalBalance MONEY
    ,CurrentDenominator MONEY
    ,AllocationAmount DECIMAL(18,6)
)

INSERT INTO #TEMP VALUES
('10241299',    '70973',    'VEMAX',    5654.12,    241781.86,  241781.86,  1),
('10241299',    '70973',    'VMGMX',    5972.14,    241781.86,  236127.74,  1),
('10241299',    '70973',    'VTMGX',    35099.02,   241781.86,  230155.6,   1),
('10241299',    '70973',    'VTSAX',    45529.07,   241781.86,  195056.58,  1),
('10241299',    '70973',    'VFIAX',    149527.51,  241781.86,  149527.51,  1)

SELECT
    PlanID 
    ,EEID 
    ,TotalBalance 
    ,Ticker
    ,MarketValue 
    ,CurrentDenominator 
    ,AllocationAmount
    ,IncrementedSourceRatio = (MarketValue/CurrentDenominator)
INTO #TEMP2
FROM #TEMP

SELECT
    PlanID 
    ,EEID 
    ,TotalBalance 
    ,Ticker
    ,MarketValue 
    ,CurrentDenominator 
    ,AllocationAmount
    ,IncrementedSourceRatio
FROM #TEMP2

示例计算表格

(A) PlanID(B) EEID(C) TotalBalance(D) Ticker(E) MarketValue(F) CurrentDenominator(G) AllocationAmount(H) IncrementedSourceRatio(I) Adjusted Allocation Formula(J) Adjusted Allocation
1024129911973241781.86VEMAX5654.12241781.8610.0233=H2*G20.0233
1024129911973241781.86VMGMX5972.14236127.7410.0252=H3*(G3-J2)0.02461284
1024129911973241781.86VTMGX35099.02230155.610.1525=H4*(G4-(J2+J3))0.1451932919
1024129911973241781.86VTSAX45529.07195056.5810.2334=H5*(G5-(J2+J3+J4))0.18832902881454
1024129911973241781.86VFIAX149527.51149527.5111=H6*(G6-(J2+J3+J4+J5))0.61856483928546

内容的提问来源于stack exchange,提问作者JMGJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 09:23:15