不是已经有另外一个贴吗?还是说还没解决?;WITH BOM AS(
    SELECT *,CAST(CEILING(单位用量*20000/(1-损耗))AS INT)[结果] FROM TB WHERE CHARINDEX('.',[newid])=0
    UNION ALL
    SELECT T1.*,CAST(CEILING(T1.单位用量*T2.结果/(1-T1.损耗))AS INT)
    FROM TB T1 JOIN BOM T2
        ON T1.[newid]LIKE T2.[newid]+'%'AND LEN(T2.[newid])+4=LEN(T1.[newid])
)
SELECT * FROM BOM