2013-07-26 83 views
1

我有以下格式的表:分组结果在SQL查询的字段在结果

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

等等

我想要得到的结果集只返回用户/实体对他们的最大的ID,所以这样的结果,例如:

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

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

回答

4

尝试使用group bymax功能

select user, Entity, max(id) as id 
from table 
group by user, Entity 
+0

啊,是的,这应该是显而易见的。我在我的选择中加入了其他字段,而不仅仅是将它们加入后缀中,这导致该组织不会按照我的需要去做。谢谢您的帮助。 – Bcpouli

0

您还可以使用CTEPartition By

像这样:我们使用Order By ID DESC因为我们需要最高ID

;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 

。如果您想要最小的ID,您可以删除DESC

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