SQL Group By Year,选择MAX(field1),显示完整日期和field1

时间:2014-08-20 21:07:53

标签: sql-server tsql

假设我有一个包含2个字段的简单表:日期,距离 我想选择每年的MAX(距离) 所以这很容易做到:

SELECT DatePart("yyyy",[FixedDate]) AS y, Max(Distance) as d
FROM mytable
GROUP BY DatePart("yyyy",[FixedDate]);

但是我还希望我的输出显示我找到MAX(距离)的第一个日期 - 也就是说,列出实际的FixedDate字段。

所以我想:

2000, 10, 10/12/2000
2001, 19, 3/8/2001
....

在任何给定的组(任何给定年份)中可能有多个日期发生MAX(距离),但我只想选择第一个发生的日期。

我似乎无法使GROUP BY正常工作!

感谢您对此有任何帮助!

1 个答案:

答案 0 :(得分:1)

试试这个:

select
    fixedyr,
    max_distance,
    min(fixedDate) as min_fixedDate
from
    mytable m inner join
    (
      SELECT 
        DatePart("yyyy",[FixedDate]) AS fixedYr, 
        Max(Distance) as max_distance
    FROM 
        mytable
    GROUP BY 
        DatePart("yyyy",[FixedDate])
) mx on
    DatePart("yyyy",m.fixeddate) = mx.fixedYr and
    m.distance = mx.max_distance
group by
    fixedyr,
    max_distance

sqlFiddle