比较多列并仅选择一列

时间:2014-05-04 06:55:55

标签: sql-server tsql

我的表格是这样创建的:

CREATE TABLE Employees (
   EmployeeID char(4) PRIMARY KEY,
   EmployeeName varchar(30) NOT NULL,
   HourlyRate real,
   SkillType varchar(20),
   SupervisorID char(4) NOT NULL
 )

插入陈述:

insert into Employees values ('1235', 'J. Smith', 12.5, 'electrical', '1311')
insert into Employees values ('1412', 'A. Green', 13.75, 'plumbing', '1520')
insert into Employees values ('2920', 'J. Brown', 10.0, 'roofing', '2920')
insert into Employees values ('3231', 'A. Purple', 17.4, 'carpenter', '3231')
insert into Employees values ('1520', 'J. Red', 11.75, 'plumbing', '1520')
insert into Employees values ('1311', 'A. Orange', 15.5, 'electrical', '1311')
insert into Employees values ('3001', 'A. Black', 8.2, 'carpenter', '3231')

我所拥有的是一张表格,其中列出了员工及其主管的ID,这些ID也包含在同一Employees表中。我只想选择每小时费率高于相应主管的员工。

我尝试了很多不同的Select语句来尝试这一点,但是它们要么返回太多的值,要么根本没有值。我知道我需要有Employee表的2个实例,以便将主管每小时费率与员工小时费率进行比较。

1 个答案:

答案 0 :(得分:1)

您可以使用此查询。请注意,您将只获得在表中拥有主管的员工。你也想要那些没有主管的人,你可以使用LEFT JOIN代替。

SELECT
   E1.*
FROM Employees E1
 JOIN Employees E2
   ON E1.SupervisorID = E2.EmployeeID
WHERE E1.HourlyRate > E2.HourlyRate