在 MS SQL 服务器中使用分区和加入

Using Partition and Join in MS SQL Server

我在 SQL 中有以下示例数据集:

我需要 select 对于 RequestType = 1 和 ToRoleID = 1 没有其他 ToRoleID 记录的最大步骤。

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

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

谢谢。

这可能就是您想要的。

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