Условно заменяя значения в SELECT - PullRequest
3 голосов
/ 30 января 2009

У меня есть запрос, который возвращает стоимость заработной платы для данного сотрудника

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

Однако мне нужно сделать дополнительный бит математики, если возвращаемое значение> 105. Бит математики, который мне нужно сделать, заключается в том, что если значение <105, значение возвращается как есть, однако, если значение> 105 тогда мне нужно сделать значение * 1.128.

Например:

Стоимость Джона Смита равна 90, поэтому запрос должен вернуть 90

Стоимость Дэвида Смита равна 140, поэтому запрос должен вернуть 157,92

Я уверен, что есть способ использовать замену, чтобы заставить ее делать то, что я хочу, но я когда-либо использовал замену только для точных совпадений, в этом случае замена зависит от значения.

Любая помощь будет высоко ценится!

Ответы [ 4 ]

6 голосов
/ 30 января 2009

Попробуйте что-то вроде этого.

SELECT     TotalCost = 
    CASE
        WHEN (totalhours * staffbaserate) < 105 THEN (totalhours * staffbaserate)
        ELSE (totalhours * staffbaserate) * 1.128
    END
FROM         newrotaRaw
WHERE     staffref = @staffref
3 голосов
/ 30 января 2009
SELECT     
    CASE WHEN totalhours * staffbaserate <= 105 THEN totalhours * staffbaserate 
         ELSE totalhours * staffbaserate * 1.128 END AS TotalCost
FROM         newrotaRaw
WHERE     staffref = @staffref
1 голос
/ 30 января 2009
SELECT    totalhours * staffbaserate * (CASE WHEN (totalhours * staffbaserate) < 105 THEN 1 ELSE 1.128 END) AS TotalCost
FROM         newrotaRaw
WHERE     staffref = @staffref
0 голосов
/ 30 января 2009

Вы ищете оператор CASE .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...