首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >AX 2009动态:计算固定资产折旧

AX 2009动态:计算固定资产折旧
EN

Stack Overflow用户
提问于 2012-02-14 12:13:40
回答 2查看 2.1K关注 0票数 1

我在SSRS固定资产折旧报告中面临一个问题,那就是如何计算折旧值?我用这个公式计算( (ACQUISITIONPRICE /折旧期)*折旧仍然存在),但是这个值是不正确的,让我们举个例子,

ASSETID,ASSETGROUP,NAME,LIFETIMEREST,ACQUISITIONPRICE

BLDRNV53,R楼,防水工程,60,-57,370

SQL查询中的计算:

代码语言:javascript
运行
复制
SELECT     ASSETTABLE.ASSETID, ASSETTABLE.ASSETGROUP, ASSETTABLE.NAME, (ASSETBOOK.LIFETIMEREST * (ASSETBOOK.ACQUISITIONPRICE / ASSETBOOK.LIFETIME)) as AccDep
FROM         ASSETBOOK INNER JOIN
                      ASSETTABLE ON ASSETBOOK.ASSETID = ASSETTABLE.ASSETID AND ASSETBOOK.DATAAREAID = ASSETTABLE.DATAAREAID
WHERE       (ASSETBOOK.DEPRECIATION = 1) AND ASSETBOOK.STATUS = 1

示例:(370/60) * -57) = -351.5,但系统报告正在计算它-350.550,有0.95的差异,整个折旧值有这样的小差异。

请帮帮忙

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-02-18 15:51:49

在本例中,缺少的是固定资产刮取值,为1.000,所以方程是(((Acquisition Price - Scrape Value) / Depreciation Period) * Depreciation Remain)

让我们用数字填充:((370-1)/ 60) * -57) = -350.550

谢谢大家的帮助

票数 0
EN

Stack Overflow用户

发布于 2012-02-14 20:42:25

我不明白-350.550值是从哪里来的。我无法在我的测试中复制它。

我的建议是确保ACQUISITIONPRICE的列数据类型准确地表示存储在数据库中的数据类型。给定名称,我假设存储的值代表某种类型的货币。小数数据类型可能是一个很好的选择,比如十进制(10,2)。根据需要提高精度以满足您的要求。

舍入值之前执行所需的所有计算,如果需要,则在表示层中执行。

下面的示例result演示了不同数据类型对结果的影响:

代码语言:javascript
运行
复制
-- create temporary table, columns with integer datatype
IF OBJECT_ID('tempdb.dbo.#Asset') IS NOT NULL
    DROP TABLE #Asset;
CREATE TABLE #Asset (
    LifetimeRest INTEGER NOT NULL,
    AcquisitionPrice INTEGER NOT NULL,
    Lifetime INTEGER NOT NULL
);

-- load sample data
INSERT INTO #Asset VALUES (-57, 370, 60);

-- result is -342 with integer datatype and no conversion
SELECT
    IntegerCalculation = LifetimeRest * (AcquisitionPrice / Lifetime)
FROM #Asset;

-- result is -351.500000 is with dynamic decimal conversion
SELECT
    DynamicDecimalCalculation = LifetimeRest *
                                (CAST(AcquisitionPrice AS DECIMAL) / Lifetime)
FROM #Asset;

-- change price datatype to decimal with consistent precision and scale
ALTER TABLE #Asset ALTER COLUMN AcquisitionPrice DECIMAL(10, 2);

-- result is -351.4999620 with static decimal precision and scale, 
-- and no on the fly conversion
SELECT
    StaticDecimalCalculation = LifetimeRest * (AcquisitionPrice / Lifetime)
FROM #Asset;

-- cleanup
IF OBJECT_ID('tempdb.dbo.#Asset') IS NOT NULL
    DROP TABLE #Asset;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9276673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档