首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从可以是正值和负值创建%

从可以是正值和负值创建%
EN

Stack Overflow用户
提问于 2019-03-29 23:24:45
回答 1查看 47关注 0票数 0

我正在写一份报告,它应该显示库存准确率,然后是准确率。问题是库存中可能存在过多(正)或短缺(负)。百分比将按位置计算

例如。

代码语言:javascript
复制
Loc.         expected qty   Actual QTY    % 
Location 1   48              48          100%
Location 2   52              53          98%
Location 3   48              45          93%
Location 4   48              48          100%

我如何计算方差,而不仅仅是期望与实际的比率?

EN

回答 1

Stack Overflow用户

发布于 2019-03-29 23:43:58

使用CASE语句可以很容易地做到这一点。棘手的部分是确保您对十进制值进行计算。您可以从小数开始并转换回INT,也可以从INT开始并在计算中将它们转换为小数。

下面是一个使用临时表的示例,其中包含示例数据:

代码语言:javascript
复制
CREATE TABLE #table1
(
    loc INT
    ,[expected qty] DECIMAL(10, 1)
    ,[Actual QTY] DECIMAL(10, 1)
)

INSERT INTO #table1
(
    loc
    ,[expected qty]
    ,[Actual QTY]
)
VALUES
(1, 48, 48)
,(2, 52, 53)
,(3, 48, 45)
,(4, 48, 48)

SELECT
    loc
    ,[expected qty] = CAST([expected qty] AS INT)
    ,[Actual QTY] = CAST([Actual QTY] AS INT)
    ,[Acc %] = CAST(CASE WHEN [expected qty] >= [Actual QTY]
                         THEN ( [Actual QTY] / [expected qty] ) * 100
                    WHEN [expected qty] < [Actual QTY]
                        THEN 100 - ((( [Actual QTY] / [expected qty] ) * 100 ) - 100 ) END AS INT)
FROM #table1

DROP TABLE #table1

结果:

代码语言:javascript
复制
loc expected qty    Actual QTY  Acc % 
1   48              48          100 
2   52              53          98 
3   48              45          93 
4   48              48          100
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55420679

复制
相关文章

相似问题

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