获取SQL Server中具有最小值的所有项

获取SQL Server中具有最小值的所有项,sql,sql-server,Sql,Sql Server,这张桌子是这样的: ---------------------------------- EmployeeId Tasks_Count 1 1 2 1 3 2 4 1 5 3 我需要一个查询,以获取具有最小任务计数的所有员工。结果应该是这样的: --------------- EmployeeId

这张桌子是这样的:

----------------------------------
   EmployeeId      Tasks_Count
   1               1
   2               1
   3               2
   4               1
   5               3
我需要一个查询,以获取具有最小任务计数的所有员工。结果应该是这样的:

---------------
   EmployeeId   
   1               
   2               
   4
问题是我使用子查询来计算任务。这是我的密码

SELECT *
FROM (SELECT EmployeeId,
             COUNT(*) AS Tasks_count
      FROM Tasks
      INNER JOIN Status ON Tasks.StatusId=Status.Id
      WHERE Status.Name != 'Closed'
      GROUP BY EmployeeId
      ORDER BY Tasks_count DESC) AS Employee_not_closed
WHERE Tasks_count IN (SELECT MIN(Tasks_count) 
                      FROM Employee_not_closed)
你可以在下面试试-

select * from tablename
where Tasks_Count in (select min(Tasks_Count) from tablename)

可以对子查询使用联接

    select m.EmployeeId 
    from my_table  m
    inner join  
    (
        select min(task_count) min_task
        from my_table 
    ) t  on t.min_task = m.task_count

使用带领带的
先取:

select EmployeeId
from tablename
order by Tasks_Count
fetch first 1 row with ties

也可以使用以下类似的
RANK()
函数来完成

;with cte as
(
   select Employeeid, rank() over( order by Tasks_Count) rn
   from @table
)
select * from cte where rn=1

您可以使用下面的代码,我已经测试了代码,并且工作正常

select EmployeeId from StackOverFlow_3 where Tasks_Count in(select min(Tasks_Count) from StackOverFlow_3)

非常类似于选择带领带的top 1…我不知道这个选项。@GeorgeMenoutis,FETCH FIRST是ANSI SQL版本。