有条件地替换SELECT中的值

时间:2009-01-30 15:53:19

标签: sql sql-server

我有一个查询返回给定员工的工资成本

SELECT     totalhours * staffbaserate AS TotalCost
FROM         newrotaRaw
WHERE     staffref = @staffref

但是如果返回的值是>我需要做一些额外的数学运算。 105.我需要做的一点数学是,如果值是< 105该值按原样返回,但是如果该值> 105然后我需要做值* 1.128。

例如:

John Smith的成本是90因此查询应返回90

David Smith的费用为140因此查询应返回157.92

我确信有一些方法可以使用替换来让它做我想要的但是我只使用替换完全匹配,在这种情况下,替换是以值为条件的。

非常感谢任何帮助!

4 个答案:

答案 0 :(得分:6)

尝试这样的事情。

SELECT     TotalCost = 
    CASE
        WHEN (totalhours * staffbaserate) < 105 THEN (totalhours * staffbaserate)
        ELSE (totalhours * staffbaserate) * 1.128
    END
FROM         newrotaRaw
WHERE     staffref = @staffref

答案 1 :(得分:3)

SELECT     
    CASE WHEN totalhours * staffbaserate <= 105 THEN totalhours * staffbaserate 
         ELSE totalhours * staffbaserate * 1.128 END AS TotalCost
FROM         newrotaRaw
WHERE     staffref = @staffref

答案 2 :(得分:1)

SELECT    totalhours * staffbaserate * (CASE WHEN (totalhours * staffbaserate) < 105 THEN 1 ELSE 1.128 END) AS TotalCost
FROM         newrotaRaw
WHERE     staffref = @staffref

答案 3 :(得分:0)

您正在寻找CASE statement