【问题标题】:Conditionally replacing values in SELECT有条件地替换 SELECT 中的值
【发布时间】:2009-01-30 15:53:18
【问题描述】:

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

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

但是,如果返回值 > 105,我需要做一些额外的数学运算。我需要做的数学运算是,如果值 105 然后我需要做 value * 1.128。

例如:

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

David Smith 的成本为 140,因此查询应返回 157.92

我确信有某种方法可以使用 replace 来让它做我想做的事,但我只使用 replace 进行完全匹配,在这种情况下,replace 取决于值。

任何帮助将不胜感激!

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    试试这样的。

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

    【讨论】:

    • 从技术上讲,他的要求是
    • 感谢该tippex,但原始帖子中没有明确定义相等组件。
    • 哦,你是对的。我重新阅读了它,第一次我停在第一个 105 小时后生效的加班奖金。
    【解决方案2】:
    SELECT     
        CASE WHEN totalhours * staffbaserate <= 105 THEN totalhours * staffbaserate 
             ELSE totalhours * staffbaserate * 1.128 END AS TotalCost
    FROM         newrotaRaw
    WHERE     staffref = @staffref
    

    【讨论】:

      【解决方案3】:
      SELECT    totalhours * staffbaserate * (CASE WHEN (totalhours * staffbaserate) < 105 THEN 1 ELSE 1.128 END) AS TotalCost
      FROM         newrotaRaw
      WHERE     staffref = @staffref
      

      【讨论】:

        【解决方案4】:

        您正在寻找CASE statement

        【讨论】:

          猜你喜欢
          • 2012-01-03
          • 2021-10-15
          • 2021-06-11
          • 2013-07-13
          • 2019-04-08
          • 1970-01-01
          • 2014-08-23
          • 2016-11-17
          相关资源
          最近更新 更多