T-SQL 计算固定资产折旧(双倍余额法)
2012-07-21 20:20
162 查看
同样应用 CTE,计算固定资产折旧(双倍余额法)
计算机 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
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
相关文章推荐
- T-SQL 计算固定资产折旧(直线法)
- sql计算(,1,2,3,4,)中有几个数字
- SQL如何修改被计算字段引用的字段类型
- Sql 计算量个时间的差
- 对DB操作的一点认识------所有数据计算在SQL中进行
- 计算sql语句执行时间
- SQL计算两个日期之间相差的工作天数
- SQL 通过时间计算年龄
- 通过经纬度计算距离,可以用来得到周边500米内的商家。mybatis中的Sql语句实现
- 《Microsoft SQL Server 2008 Analysis Services Step by Step》学习笔记六:创建高级度量和计算(下)
- Vertica用于时间计算的SQL语句大全
- 使用sql语句计算周次及起始日期
- SQL计算两个时间段的差,精确到秒(可用于倒计时)
- SQL 7 计算字段 - 1. 常量字段
- 一条有关计算奇偶数的问题(SQL)
- sql 字段分割 物流费计算
- sql service 关于时间(datetime)加减计算例子
- 转载用sql语句计算出mysql数据库的qps,tps,iops性能指标
- Sql 常用日期计算
- SQL Plu计算算数表达式及SQL Plus下清屏快捷键