2017-06-13 54 views
-3

我有一个SQL表中的列SQL选择最高值:其中重复的ID

ID,  DayNumber, Mfm, value 
432080971, 1,   15, 57 
432080971, 1,   15, 59 
432080978, 3,   15, 54 
432080978, 4,   45, 54 

不幸的是有一些重复的条目。我想要的是一个select语句,它返回没有重复ID,Daynumber和Mfm的表,并且如果有双重条目来选择具有较高值的​​行。

所以,作为一个例子上面的条目将被作为返回:

ID,  DayNumber, Mfm, value 
432080971, 1,   15, 59 
432080978, 3,   15, 54 
432080978, 4,   45, 54 

我使用SQL Server Management Studio中运行SQL Server 2012

+1

使用'group by'。 –

+0

'从表组中选择id,max(value)by id'就像这样 –

+3

问及答案数百次。 –

回答

0
select 
    ID, DayNumber, Mfm, max(value) 
    from table 
group by ID, DayNumber, Mfm 
1
select top (1) 
with ties ID, DayNumber, Mfm, value 
from 
table 
order by row_number() over (partiton by 
          ID, DayNumber, Mfm 
          order by value desc) 
+3

一个相当不知道的人肯定已经低估了这个答案。对于这种情况,我认为“GROUP BY”是最好的,但是这绝对是合理的(特别是如果用户想要“Mfm”与最大值关联)。 –

0

你必须使用Group By子句并使用聚合函数MAX获取组的最高值。类似这样的:

Select ID, DayNumber, Mfm, Max(value) From 
From your_table 
Group By ID, DayNumber, Mfm