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
它们相等吗?哪个名称是美国估计输出的最高名称