1

我有一个格式如下的表:

User | Entity | ID
123    AB       1
123    AB       2
543    BC       3
098    CB       4
543    BC       5
543    ZG       6

ETC...

我想得到一个结果集,它只返回用户/实体对及其 ID 的最大 ID,所以这个结果例如:

User | Entity | ID
123    AB        2
098    CB        4
543    BC        5
543    ZG        6

有没有办法在 SQL 中做到这一点?

4

2 回答 2

4

尝试使用group bywithmax函数

select user, Entity, max(id) as id
from table 
group by user, Entity
于 2013-07-26T13:43:10.267 回答
0

您还可以使用CTEPartition By

像这样:

;WITH CTE as
(
SELECT
    Users,Entity,
    ROW_NUMBER() OVER(PARTITION BY Entity ORDER BY ID DESC) AS Row,
    Id
    FROM Item
)
SELECT Users, Entity, Id From CTE Where Row = 1

请注意,我们使用Order By ID DESC了我们需要最高的IDDESC如果你想要最小的ID ,你可以删除。

SQLFiddle:http ://sqlfiddle.com/#!3/1dcb9/4

于 2013-07-26T13:58:41.240 回答