【问题标题】:SQL Group By Year, Select MAX(field1), Display Full Date and field1SQL Group By Year,选择MAX(field1),显示完整日期和field1
【发布时间】:2014-08-20 21:07:53
【问题描述】:

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

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

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

所以我想要:

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

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

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

感谢您对此提供的任何帮助!

【问题讨论】:

    标签: sql-server tsql


    【解决方案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

    【讨论】:

    • 感谢您提供这么好的信息!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-15
    • 2011-05-12
    相关资源
    最近更新 更多