2013-07-26 130 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