select e.emp_no, e.first_name, e.last_name, b.btype, s.salary, (case b.btype when 1 then s.salary * 0.1 when 2 then s.salary * 0.2 else s.salary * 0.3 end) as bonus from employees as e inner join emp_bonus as b on e.emp_no = b.emp_no inner join salaries as s on b.emp_no =a s.emp_no and s.to_date='9999-01-01'使用sqlsever
时间: 2024-02-12 10:04:22 浏览: 160
感谢您的提问,这是一条SQL Server的查询语句,它的作用是查询员工的基本信息、薪资和奖金,其中奖金的计算方式根据员工的奖金类型(btype)不同而有所不同。具体来说,奖金类型为1时,奖金为薪资的10%;奖金类型为2时,奖金为薪资的20%;其他情况下,奖金为薪资的30%。下面是该查询语句的详细解释:
```
select
e.emp_no, -- 员工编号
e.first_name, -- 员工名字
e.last_name, -- 员工姓氏
b.btype, -- 员工奖金类型
s.salary, -- 员工薪资
(case b.btype
when 1 then s.salary * 0.1
when 2 then s.salary * 0.2
else s.salary * 0.3
end) as bonus -- 员工奖金
from
employees as e
inner join emp_bonus as b on e.emp_no = b.emp_no
inner join salaries as s on b.emp_no = s.emp_no and s.to_date='9999-01-01'
```
该查询使用了三个表:employees、emp_bonus和salaries。其中employees表存储了员工的基本信息,emp_bonus表存储了员工的奖金类型,salaries表存储了员工的薪资信息。这三个表通过员工编号(emp_no)进行关联。
查询语句中的case语句用于根据奖金类型计算员工的奖金。当奖金类型为1时,奖金为薪资的10%;当奖金类型为2时,奖金为薪资的20%;其他情况下,奖金为薪资的30%。最终,查询结果会包含员工的基本信息、薪资、奖金等字段。
阅读全文