如何找到每个部门的最高指定员工?
我有这个表和值:
venv
以下是我尝试的查询:
CREATE TABLE [dbo].[#deptartment]
(
[emp_id] [INT] IDENTITY(1, 1) NOT NULL,
[dept_name] [VARCHAR](100) NULL,
[emp_name] [VARCHAR](50) NULL ,
[desig] [VARCHAR](100) NULL
)
ON [PRIMARY]
GO
INSERT INTO #deptartment VALUES ('IT','JAFFERY','DIRECTOR')
INSERT INTO #deptartment VALUES ('DEVELOPMENT','CORBIT','PROGRAMMER')
INSERT INTO #deptartment VALUES ('DEVELOPMENT','CHANDRA','DBA')
INSERT INTO #deptartment VALUES ('IT','KEVIN','MANAGER')
INSERT INTO #deptartment VALUES ('IT','ROBERT','SUPERVISOR')
INSERT INTO #deptartment VALUES ('QA','NOMAN','ANALYST')
INSERT INTO #deptartment VALUES ('ADMIN','CORE','RECEPTIONIST')
INSERT INTO #deptartment VALUES ('QA','MADDEN','ANALYST')
INSERT INTO #deptartment VALUES ('IT','NORRIS','TECHNICIAN')
INSERT INTO #deptartment VALUES ('ADMIN','PATRICK','CLERK')
INSERT INTO #deptartment VALUES ('DATA','SONJA','SUPERVISOR')
INSERT INTO #deptartment VALUES ('QA','GEORGE','MANAGER')
INSERT INTO #deptartment VALUES ('ADMIN','EMILLY','MANAGER')
INSERT INTO #deptartment VALUES ('QA','PATRICK','TESTER')
INSERT INTO #deptartment VALUES ('DEVELOPMENT','ABDUL','MANAGER')
INSERT INTO #deptartment VALUES ('DATA','PATRICK','CLERK')
INSERT INTO #deptartment VALUES ('ADMIN','GEORGE','CLERK')
INSERT INTO #deptartment VALUES ('DEVELOPMENT','YURIY','SUPERVISOR')
INSERT INTO #deptartment VALUES ('DATA','GRAHAM','OPERATOR')
答案 0 :(得分:0)
您正在寻找条件排名/订单。请注意order by case
声明。您需要完成此声明,以根据最高指定员工的定义放置desig
的顺序。我对前三个做了一些假设,但是请确保为desig
select
x.emp_id
,x.dept_name
,x.emp_name
from(
select
d.emp_id
,d.dept_name
,d.emp_name
,row_number() over (partition by d.dept_name order by case
when d.desig = 'DIRECTOR' then 1
when d.desig = 'SUPERVISOR' then 2
when d.desig = 'OPERATOR' then 3
--etc...
end) as RN
from #deptartment d) x
where x.RN = 1