在MS SQL Server中使用分区和连接

时间:2016-01-22 19:27:49

标签: sql-server join partition

我在SQL中有以下示例数据集:enter image description here

我需要为RequestType = 1和ToRoleID = 1选择没有其他ToRoleID记录的最大步骤。

示例:如果我按RequestType = 1和ToRoleID = 1进行过滤,则应该只给出Request_ID = 5的行。

我可以只使用分区,JOIN吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

这可能就是你想要的。

DECLARE @RequestType INT = 1,
        @ToRoleID INT = 1

SELECT  * 
FROM    (   SELECT  *,
                    MAX(ToRoleID) OVER (PARTITION BY Request_ID) MaxRole
            FROM    myTable
            WHERE   me.RequestType = @RequestType) mt
WHERE   MaxRole = @ToRoleID