SQL Server - 选择与两个单独的相应单元格匹配的多个最大值

时间:2013-09-26 19:40:38

标签: sql sql-server

我是SQL的初学者,并且一直在尝试根据访问强度和文件夹名称获取所有最大值,并允许相应地显示文件夹组。我尝试使用MAX函数但它只返回1个最大结果。提前感谢您获得有关如何达到指定结果的任何帮助或指导。

请参阅顶部表格附带的jpg链接以及底部表格中的所需结果。

约翰

top table and the desired outcome in the bottom table

3 个答案:

答案 0 :(得分:1)

您可以使用RANK功能将记录放入订单中,然后只选择前1:

WITH CTE AS
(   SELECT  Folder_name,
            [User],
            Access,
            Group_Allowing,
            [Rank] = RANK() OVER(PARTITION BY Folder_Name, [User] ORDER BY Access DESC)
    FROM    T
)
SELECT  Folder_name,
        [User],
        Access,
        Group_Allowing
FROM    CTE
WHERE   [Rank] = 1;

PARTITION BY子句类似于GROUP BY,每个组的排名将再次从0开始。然后简单地说明订单的排序顺序。

答案 1 :(得分:0)

您希望使用MAX()将查询放入子查询中,并将JOIN放入其中:

SELECT a.*
FROM YourTable a
JOIN (SELECT Folder_Name, [User], MAX(Access) Max_Access
      FROM YourTable
      GROUP BY Folder_Name, [User]
     )b
 ON a.Folder_Name = b.Folder_Name
  AND a.[User] = b.[User]
  AND a.Access = b.Max_Access

答案 2 :(得分:0)

您可以使用“ORDER BY Access DESC”和“LIMIT [您想要的条目数]”,或者如果您想获得最高的数字,您可以使用“GROUP BY Access”,然后使用max()显示所有你想要的条目