sql - SQL查询-如何在不超过一定工资限额的情况下给员工加薪
问题描述
我正在尝试获取一个查询,该查询将允许我增加收入低于 2000 的人的工资,但我不希望这些人的工资增长高于 2000。
我正在使用的表是这样设置的:
DECLARE @Employee TABLE
(
Id INT IDENTITY(1,1) PRIMARY KEY
,FirstName NVARCHAR(100)
,Surname NVARCHAR(100)
,Salary MONEY
)
INSERT @Employee (FirstName, Surname, Salary) VALUES
('Michael', 'Barker', 2750), ('Robert', 'Morton', 1550),
('John', 'Mitchell', 1890), ('William', 'Davison', 1840),
('James', 'Houston', 1800), ('Mark', 'Parsons', 2060),
('David', 'Higgins', 1950), ('Richard', 'Frost', 1470),
('Frank', 'Herbert', 2100), ('Brian', 'Matthews', 1930)
我还使用一个变量来增加工资,如下所示:
DECLARE @SalaryIncreaseInPercentage DECIMAL(16, 2) = 10
我能想到的最好的主意是使用CASE
声明。我如何改进代码,使新增加的工资停止在 2000?
我写的代码是这样的:
Update @Employee
SET Salary = CASE
WHEN Salary<2000 THEN((@SalaryIncreaseInPercentage/ 100) * Salary) + Salary
ELSE Salary
END
解决方案
您可以使用MIN
和VALUES
功能
DECLARE @IncreaseFactor DECIMAL(16, 2) = 10
UPDATE e SET e.Salary = (SELECT MIN(NewSalary)
FROM (VALUES (e.Salary * (1 + @IncreaseFactor/100)), (2000)) AS salaries(NewSalary))
FROM @Employee e
WHERE e.Salary < 2000
推荐阅读
- typescript - 将参数传递到打字稿中是如何工作的?
- react-native - 更新 react-native-maps 以使用 create-react-native-app
- ios - 将日期添加到字符串日期 swift
- c++ - 如何找出 Kernel32 依赖项的来源
- android-activity - 无法从 Android App 中的菜单打开的子活动返回父活动
- php - 在 iOS 聊天应用中刷新聊天消息
- c# - 将实体框架 C# 代码转换为原始 SQL 以提高性能
- python - 是否可以在 Bokeh 中为 checkboxbuttongroup 对象添加标题?
- php - 正确获取 PHP 日期格式
- ruby-on-rails - 在 Rails 中具有连接表的对象的表单