从 SQL 服务器的 group by 子句中包含不同字符串值的结果中获取最大值

Get max value from result which contains different string value in group by clause in SQL Server

我的table是这样的,

Field1   |  Field2  |  Field3

2        |    100   |  test1
3        |    100   |  test2

我需要从这个结果中得到最大值。所以结果应该如下,

3   100   test2

我当前的查询是,

SELECT MAX(Field1),Field2,Field3 FROM Table1 GRUOP BY Field2,Field3

这returns这两行。但我只需要包含 MAX(Field1) 值的行。

大概,您想要每个不同 field2 具有最大值 field1 的行。由于您想要整行,因此聚合不是解决方案;相反,您想过滤。

这是一种使用相关子查询的方法:

select t.*
from mytable t
where t.field1 = (select max(t1.field1) from mytable t1 where t1.field2 = t.field2)

另一个选项使用 window 函数:

select *
from (
    select t.*, rank() over(partition by field2 order by field1 desc) rn
    from mytable t
) t
where rn = 1

最后,这是一个更原始的方法,使用 with ties:

select top (1) with ties *
from mytable
order by rank() over(partition by field2 order by field1 desc)