Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 在TSQL中,如何按“订购”;“最常见的”;价值观_Sql Server_Tsql - Fatal编程技术网

Sql server 在TSQL中,如何按“订购”;“最常见的”;价值观

Sql server 在TSQL中,如何按“订购”;“最常见的”;价值观,sql-server,tsql,Sql Server,Tsql,例如,使用AdventureWorks,我希望获得所有员工及其经理的列表,其中经理的下属最多。使用GROUP by很容易获得每个经理拥有的报告数量,但我希望在单独的行中获得他们下属的实际列表 SELECT Subordinate.LoginID, Subordinate.Title, Manager.LoginID, Manager.Title FROM HumanResources.Employee Subordinate JOIN HumanResources.Employee

例如,使用AdventureWorks,我希望获得所有员工及其经理的列表,其中经理的下属最多。使用GROUP by很容易获得每个经理拥有的报告数量,但我希望在单独的行中获得他们下属的实际列表

SELECT
  Subordinate.LoginID, Subordinate.Title, Manager.LoginID, Manager.Title
FROM
  HumanResources.Employee Subordinate
  JOIN HumanResources.Employee Manager
    ON Subordinate.ManagerID = Manager.EmployeeID
ORDER BY 
  ??

假设您至少在SQLServer2005上,您可以使用

ORDER BY COUNT(*) OVER (PARTITION BY Manager.LoginID)  DESC
虽然我想

ORDER BY COUNT(*) OVER (PARTITION BY Manager.LoginID) DESC,  Manager.LoginID

可能更好的做法是避免将结果行与下属人数相同的经理混淆。

有些经理管理经理吗?太好了,正是我想要的。