Sql server 在单个查询中选择每个部门的顶级指定员工
如何找到每个部门的顶级指定员工 我有以下表格和数值:Sql server 在单个查询中选择每个部门的顶级指定员工,sql-server,Sql Server,如何找到每个部门的顶级指定员工 我有以下表格和数值: 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
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')
以下是我尝试过的查询:
SELECT D1.dept_name, D1.desig,
RANK() OVER(Partition BY D1.DESIG ORDER BY D1.dept_name,D1.DESIG
DESC)
AS RANKNUMBER
FROM #deptartment D1 GROUP BY D1.desig, D1.dept_name
ORDER BY RANKNUMBER DESC
您正在寻找有条件的排名/顺序。请注意
逐案排序
语句。您需要完成此声明,根据您对最高指定员工的定义来确定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
请去掉你帖子中的大写字母,这不是吸引注意力的方法。下一步,请告诉我们你为自己回答这个问题所做的努力。我们不是来为您编写代码的,但我们将帮助您解决您在尝试自己解决代码时遇到的问题。您需要明确指定每个部门哪个角色高于其他角色。例如,
DBA
和PROGRAMMER
它们相等吗?哪个名称是美国估计输出的最高名称