如果他们的收入高于薪水水平,我如何获得员工详细信息?

时间:2016-09-22 12:05:18

标签: sql-server

我有一个员工数据库,所有员工根据他们的经验(根据雇用日期计算)有薪酬级别,但有些人因为以前的经验而赚得更高。我有两个表员工表(关于员工的详细信息,包括他们的薪酬级别)和薪资级别表(薪资级别的详细信息) 计算了多年的经验。我的问题是,所有收入超过薪水水平的员工都会说他们赚钱。一切都与视图相关联。

SELECT Accountant_Name, Hire_Date, Pay_Level_Name, 'Pay_Level_No'
CONVERT (INT,Experience_in_Years) as 'XP in years'
FROM accountant_view;

那么如何查看每位员工的薪资水平是否与该特定薪资水平的薪水相匹配(薪水在薪资级别表中) 我不确定我是否以正确的方式提出要求,但我们将不胜感激。

CREATE TABLE paylevel
(paylevel_no SMALLINT IDENTITY (1,1),
paylevel_name VARCHAR (25) NOT NULL,
annual_pay MONEY NOT NULL,
min_experience CHAR (3) NOT NULL,

CONSTRAINT paylevel_pk PRIMARY KEY (paylevel_no)
);
GO

CREATE TABLE accountant
(accountant_id INT NOT NULL IDENTITY (01, 1),
branch_id SMALLINT NOT NULL,
paylevel_no SMALLINT NOT NULL,
first_name VARCHAR (20) NOT NULL

1 个答案:

答案 0 :(得分:1)

鉴于您提供的信息(不幸的是没有实际的表格模式),以下内容将作为指南。

基本的前提是,员工的实际工资需要通过匹配每个表中的工资水平与预期工资进行比较:

SELECT emp.ID, emp.PayLevel, emp.ActualPay, pl.PayLevel, pl.Pay_Level_Name, pl.ExpectedPay
FROM Employees emp
INNER JOIN Paylevels pl ON pl.PayLevel = emp.PayLevel
WHERE  emp.ActualPay > pl.ExpectedPay

希望这有助于

Ravinda,
使用更新的模式,这是您将使用的可能语句。我猜测在会计师表的某个地方你有一个具有实际工资值的栏目。

SELECT ac.accountant_id, ac.first_name, ac.branch_id, pl.paylevel_name, pl.annual_pay, ac.actual_pay
FROM accountant ac
INNER JOIN paylevel pl ON ac.paylevel_no = pl.paylevel_no
WHERE ac.actual_pay > pl.annual_pay

请提供实际的付款栏或来源,以便更好地完善,

谢谢,