首页 > 解决方案 > 案例语法 - 减去 2 个值会给出不正确的数字

问题描述

我正在做这个任务:

在此处输入图像描述

我基于此编写的代码是:

SELECT Number1, Number2, MathOperation, Result = CASE
WHEN MathOperation = 'Addition' THEN Number1 + Number2
WHEN MathOperation = 'Substraction' THEN Number1 - Number2
WHEN MathOperation = 'Multiplication' THEN Number1 * Number2
ELSE Number1 / Number2
END
FROM @Math;

减法结果 ( Second WHEN ) 与除法结果 ( ELSE ) 相同,这是不正确的。我不确定我做错了什么。能否请你帮忙?

标签: sqlsql-servercase

解决方案


它给出了正确的结果。

您的查询无法正常工作/行为不同并产生错误的结果,这可能是因为表中的数据Subtraction和 case 语句中的值Substraction不同。

create table Math(id int identity(1, 1) primary key
, Number1 decimal(16, 2)
, Number2 decimal(16, 2)
, MathOperation NVARCHAR(100))

insert into Math values
  (128, 48, 'Addition')
, (128, 48, 'Substraction')
, (128, 48, 'Multiplication')
, (128, 48, 'Division')

SELECT Number1
    ,Number2
    ,MathOperation
    ,Result = CASE 
        WHEN MathOperation = 'Addition'
            THEN Number1 + Number2
        WHEN MathOperation = 'Substraction'
            THEN Number1 - Number2
        WHEN MathOperation = 'Multiplication'
            THEN Number1 * Number2
        ELSE Number1 / Number2
        END
FROM Math

db<>小提琴演示


推荐阅读