Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 仅获取最新(总体)加载的行_Sql_Sql Server_Sql Server 2008_Group By_Max - Fatal编程技术网

Sql 仅获取最新(总体)加载的行

Sql 仅获取最新(总体)加载的行,sql,sql-server,sql-server-2008,group-by,max,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选择行。基于上述情况,最新(总体)的加载ID为102,因此我需要有以下结果集

这是我的桌子:

EmpID | Rating | LoadID
-----------------------
  1       5        100
  1       7        101
  1       8        102
  2       6        100
  2       6        101
  3       4        102
我只需要为最新(全部)
LoadID
选择行。基于上述情况,最新(总体)的加载ID为102,因此我需要有以下结果集:

EmpID | Rating | LoadID
-----------------------
  1        8      102
  3        4      102

您可以声明变量或使用嵌套查询:

以下内容未经测试,可能存在语法错误:

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
    )

您可以声明变量或使用嵌套查询:

以下内容未经测试,可能存在语法错误:

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
    )

下面是一个使用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

下面是一个使用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
你可以这样做

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)
你可以这样做

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)

这里使用CTE进行同样的操作

;WITH TblCTE as(
SELECT  [EmpId],[Rating],[LoadID],RANK() over (order by [LoadID] DESC) r
FROM    yourTable)
SELECT  * FROM TblCTE WHERE r=1

这里使用CTE进行同样的操作

;WITH TblCTE as(
SELECT  [EmpId],[Rating],[LoadID],RANK() over (order by [LoadID] DESC) r
FROM    yourTable)
SELECT  * FROM TblCTE WHERE r=1

这有点冗长,子查询可能会使它有点慢。我建议使用CTE。你是对的,嵌套查询肯定不优雅。这就是实体框架对大脑SQL区域的作用。请原谅我的无知。。。如何使用CTE进行此操作?尽管@FarligOpptreden的建议值得赞誉。哈哈!谢谢你,先生P@tonson7检查我的答案,用一个cteth实现这个,它有点冗长,子查询可能会使它有点慢。我建议使用CTE。你是对的,嵌套查询肯定不优雅。这就是实体框架对大脑SQL区域的作用。请原谅我的无知。。。如何使用CTE进行此操作?尽管@FarligOpptreden的建议值得赞誉。哈哈!谢谢你,先生P@tonson7检查我的答案,以便使用CTE实现此功能