通过结果中的字段对sql查询进行分组

时间:2013-07-26 13:41:50

标签: sql

我有一个表格,格式如下:

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

等...

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

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

有没有办法在SQL中执行此操作?

2 个答案:

答案 0 :(得分:4)

尝试将group bymax功能

一起使用
select user, Entity, max(id) as id
from table 
group by user, Entity

答案 1 :(得分: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因为我们需要最高 ID 。如果您想要最小的 ID ,则可以删除DESC

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