WITH RECURSIVE CalcCTE AS (
-- 基礎層:明細科目直接取值
SELECT code, value, 0 AS level FROM DetailValues
UNION ALL
-- 遞歸層:合計科目根據配置計算
SELECT c.parent_code,
SUM(CASE WHEN cfg.calc_type=1 THEN cte.value ELSE -cte.value END),
cte.level + 1
FROM SubjectConfig cfg
JOIN CalcCTE cte ON cfg.child_code = cte.code
GROUP BY c.parent_code
)
SELECT * FROM CalcCTE WHERE code LIKE 'A%'; -- 合計科目結果
具體實現需根據實際表結構調整欄位名、數據類型、遞歸深度限制(MAXRECURSION)。建議提供完整建表腳本與樣本數據以獲得精確代碼。