获取最新(整体)负载的行

时间:2011-03-01 11:23:44

标签: sql sql-server sql-server-2008 group-by max

这是我的表:

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

4 个答案:

答案 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