T-SQL计算固定资产折旧(双倍余额法)
同样应用 CTE,计算固定资产折旧(双倍余额法)
[sql]
DECLARE @Assets TABLE (NAME VARCHAR(20), PurchaseCost MONEY, Period INT)
DECLARE @DBFactor INT
SET @DBFactor = 2 -- 双倍
INSERT INTO @Assets
SELECT '计算机', 5000, 24
;WITH DBDepSched (AssetID, [Month], Period -- 固定资产
,DBDepAmt, DBBookValue, DBCumDep -- 双倍余额法
) AS ( www.2cto.com
SELECT NAME, 0, Period
,ROUND(2*PurchaseCost/Period, 2) -- 双倍余额
,PurchaseCost, CAST(0 AS MONEY)
FROM @Assets
UNION ALL
SELECT AssetID, NextMo, Period
,CASE WHEN [Month] = MidPeriod THEN ROUND(DBBookValue/MidPeriod, 2)
WHEN NextMo = Period THEN DBBookValue
WHEN [Month] > MidPeriod THEN DBDepAmt
WHEN YE = 1 THEN ROUND(@DBFactor*DBBookValue/Period, 2)
ELSE DBDepAmt END
,CASE WHEN [Month] = MidPeriod THEN DBBookValue - ROUND(DBBookValue/MidPeriod, 2)
WHEN NextMo = Period THEN CAST(0 AS MONEY)
WHEN [Month] > MidPeriod THEN DBBookValue - DBDepAmt
WHEN YE = 1 THEN DBBookValue - ROUND(@DBFactor*DBBookValue/Period, 2)
ELSE DBBookValue - DBDepAmt END
,CASE WHEN [Month] = MidPeriod THEN DBCumDep + ROUND(DBBookValue/MidPeriod, 2)
WHEN NextMo = Period THEN DBCumDep + DBBookValue
WHEN [Month] > MidPeriod THEN DBCumDep + DBDepAmt
WHEN YE = 1 THEN DBCumDep + ROUND(@DBFactor*DBBookValue/Period, 2)
ELSE DBCumDep + DBDepAmt END
FROM DBDepSched
CROSS APPLY (SELECT NextMo=[Month]+1, MidPeriod=Period/2, YE=([Month]+1)/12) x
WHERE [Month] < Period
) www.2cto.com
SELECT AssetID, [Month], DBDepAmt, DBBookValue, DBCumDep
FROM DBDepSched
ORDER BY AssetID, [Month]
计算机 0 416.67 5000.00 0.00
计算机 1 416.67 4583.33 416.67
计算机 2 416.67 4166.66 833.34
计算机 3 416.67 3749.99 1250.01
计算机 4 416.67 3333.32 1666.68
计算机 5 416.67 2916.65 2083.35
计算机 6 416.67 2499.98 2500.02
计算机 7 416.67 2083.31 2916.69
计算机 8 416.67 1666.64 3333.36
计算机 9 416.67 1249.97 3750.03
计算机 10 416.67 833.30 4166.70
计算机 11 416.67 416.63 4583.37
计算机 12 34.72 381.91 4618.09
计算机 13 31.83 350.08 4649.92
计算机 14 31.83 318.25 4681.75
计算机 15 31.83 286.42 4713.58
计算机 16 31.83 254.59 4745.41
计算机 17 31.83 222.76 4777.24
计算机 18 31.83 190.93 4809.07
计算机 19 31.83 159.10 4840.90
计算机 20 31.83 127.27 4872.73
计算机 21 31.83 95.44 4904.56
计算机 22 31.83 63.61 4936.39
计算机 23 31.83 31.78 4968.22
计算机 24 31.78 0.00 5000.00
作者 incognito007