这是我的表:
EmpID | Rating | LoadID
-----------------------
1 5 100
1 7 101
1 8 102
2 6 100
2 6 101
3 4 102
我只需要选择最新(整体)LoadID
的行。基于上面的内容,最新的(整体)LoadID
是102,所以我需要有这个结果集:
EmpID | Rating | LoadID
-----------------------
1 8 102
3 4 102
答案 0 :(得分:4)
以下是使用CTE进行此操作的示例:
with RankCTE as
(
select
EmpID
, Rating
, LoadID
, Rank() over (order by LoadID desc) as R
from TABLE
)
select
EmpID
, Rating
, LoadID
from RankCTE
where R = 1
答案 1 :(得分:0)
您可以声明变量或使用嵌套查询:
以下内容未经测试,可能存在语法错误:
SELECT
t.[EmpId]
,t.[Rating]
,t.[LoadID]
FROM
yourTable t
WHERE
LoadId = (
SELECT
TOP 1 t.[LoadID]
FROM
yourTable t
ORDER BY t.[LoadID] DESC
)
答案 2 :(得分:0)
你可以这样做
declare @T table (EmpID int, Rating int, LoadID int)
insert into @T values
( 1, 5, 100),
( 1, 7, 101),
( 1, 8, 102),
( 2, 6, 100),
( 2, 6, 101),
( 3, 4, 102)
select T.*
from @T as T
where
LoadID in (select max(LoadID)
from @T)
答案 3 :(得分:0)
使用CTE
也是如此;WITH TblCTE as(
SELECT [EmpId],[Rating],[LoadID],RANK() over (order by [LoadID] DESC) r
FROM yourTable)
SELECT * FROM TblCTE WHERE r=1