SQL Server:CASE语句乘法

时间:2014-11-12 18:09:32

标签: sql sql-server

我遇到了这行代码的问题。

我正在尝试计算或乘以.01到.04之间的数字乘以.25以及.04之上的任何数字乘以1.当我将数字乘以.04(例如.05)乘以它时,它会起作用。 .01但是低于.05的任何东西都不会乘以.25。有人可以帮忙吗?谢谢!

这就是我所拥有的:

这是新的

CASE WHEN curOther IS  THEN curOther + .01 ELSE (curOther * .25) + curOther END

这是原作

CASE WHEN curOther > .04 then .01 ELSE curOther * .25 + curOther END

2 个答案:

答案 0 :(得分:0)

CASE WHEN curOther <= .04 THEN curOther*1.01 ELSE curOther*1.25 END

答案 1 :(得分:0)

您似乎在原始CASE声明中做了两件不同的事情。

起点

您的“原始”声明是这样的:

CASE WHEN curOther > .04 then .01 ELSE curOther * .25 + curOther END

这将返回以下两个值之一:

.01
(curOther * .25) + curOther

如果起始curOther值为10.0,则返回:

.01
12.50 

第一种可能性

您确实希望CASE语句返回:

10.10 
12.50

在这种情况下,您的CASE声明应该是:

CASE 
    WHEN curOther > .04 
    THEN (curOther * .01) + curOther 
    ELSE (curOther * .25) + curOther 
  END

可以进一步简化为:

CASE 
    WHEN curOther > .04 
    THEN curOther * 1.01 
    ELSE curOther * 1.25
  END

第二种可能性

您确实希望CASE语句返回:

1.01 
1.25

执行此操作后,您将其他值乘以此值(curOther * {CASE}),从而产生:

10.10 
12.50

如果是这样,您的CASE声明应为:

CASE 
    WHEN curOther > .04 
    THEN 1.01 
    ELSE 1.25
  END

第三种可能性

您正在尝试返回会增加的乘数:

.01
.25

如果初始值为10.0,您将执行以下操作:

(curOther * {CASE}) + curOther

这会给你:

10.10 
12.50

在哪种情况下,您应该使用:

CASE 
    WHEN curOther > .04 
    THEN .01 
    ELSE .25
  END