我有一个具有以下结构的 SQL 表。
TravelStatgeID TravelId EventDateTime Action FromStageID ToStageID UserID Comments
720 1280 38:20.7 Approved 0 1 2030 NULL
721 1280 40:03.2 Approved 1 2 1913 NULL
722 1280 41:24.2 Approved 2 3 2064 NULL
723 1280 45:58.5 Approved 3 4 2229 NULL
该表有数百条记录。我想查找 tostageid=3 的最大值的记录。我写了一个这样的查询:
SELECT
ABC.TravelId,
MAX(ABC.ToStageID)'STAGE'
FROM(
SELECT
ROW_NUMBER()OVER(PARTITION BY TravelId ORDER BY TravelId)'RN',
*
FROM tbl_HR_TravelStageEvent
)ABC
GROUP BY ABC.TravelId
HAVING MAX(ABC.ToStageID)=3
我不知道这样是否正确。请告诉我有哪些方法可以找到输出。
最佳答案
为什么使用PARTITION
?我看不到您在任何地方使用 ROW_NUMBER()
的结果。
尝试以下操作:
SELECT
ABC.TravelId,
MAX(ABC.ToStageID) 'STAGE'
FROM
tbl_HR_TravelStageEvent ABC
GROUP BY
ABC.TravelId
HAVING
MAX(ABC.ToStageID) = 3
关于sql - 按 ID 在结果集中查找最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20796112/