您的位置:首页 > 数据库

T-SQL 计算固定资产折旧(双倍余额法)

2012-07-21 20:20 162 查看
同样应用 CTE,计算固定资产折旧(双倍余额法)

 

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 (
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
)
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  insert table