--อัตราค่าเสื่อม = 100%/จำนวนปี
--4.วิธีลดลงทุกปี (Reducing-Charge Method) การคิดค่าเสื่อมราคาวิธีนี้การคำนวณราคาในอัตราเร่ง คือปีแรก
-- กิจการจะได้รับผลประโยชน์มากกว่าปีหลัง ๆ ทำให้ค่าเสื่อมราคาในปีแรก ๆ สูงกว่าปีหลัง
--1) วิธีลดลงตามลำดับ (Double Declining Balance Method)
-- เป็นการคิดค่าเสื่อมราคาจากยอดคงเหลือในบัญชี สินทรัพย์คือราคาตามบัญชี การคำนวณจะไม่นำราคาซากมาเกี่ยวข้อง
-- ตัวอย่าง 25×1 ม.ค. 1 เครื่องจักรราคา 200,000 บาท ประมาณว่าจะใช้งาน 5 ปี้
-- จะขายเป็นเศษเหล็กได้ 5,000 บาท
--Double Declining Balance Method
DECLARE @Assets TABLE (ID INT, PurchaseCost MONEY, Period INT)
DECLARE @DBFactor INT
SET @DBFactor = 2 -- 2=Double Declining Balance
INSERT INTO @Assets
--SELECT 1, 20000, 48 -- สี่สิบแปดเดือน
--UNION ALL
--SELECT 2, 30000, 60 -- หกสิบเดือน
--UNION ALL
SELECT 3, 200000, 60
;WITH DBDepSched (AssetID, [Month], Period -- Asset base
,DBDepAmt, DBBookValue, DBCumDep -- Declining Balance Depreciation Method
) AS (
SELECT ID, 0, Period
,ROUND(2*PurchaseCost/Period, 2) -- Declining Balance Depreciation Amount
,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]