在 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
我在 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