【问题标题】:How to get only the most recent record on a group of data?如何只获取一组数据的最新记录?
【发布时间】:2015-03-05 18:40:36
【问题描述】:

我需要帮助来解决这个 SQL 问题:我有一个这样的数据集

Customer     Field A    Date

A            y        2015-01-21

A            z        2015-02-24

B            y        2015-02-01

B            g        2015-02-25

C            z        2015-02-25

C            x        2015-03-27

我希望每个客户只获取一行,并且只获取最近的记录。 所以,结果必须是:

A           z         2015-02-24

B           g         2015-02-25

C           x         2015-03-27

我认为我需要获取所有客户的 DISTINCT,然后将它们加入到同一个表中,并在 Date 字段上使用 MAX 子句。 像这样的:

SELECT DISTINCT customer FROM mytable a
INNER JOIN mytable b ON a.customer = b.customer

但我不知道如何继续......

【问题讨论】:

    标签: sql


    【解决方案1】:

    或使用相关子查询来查找客户的最大日期:

    SELECT *
    FROM mytable a
    WHERE Date = (select max(Date) from mytable b
                  where a.customer = b.customer)
    

    【讨论】:

    • 谢谢。我不知道我能做到这一点!
    【解决方案2】:

    您可以在每个客户的最大日期自行加入

    SELECT a.*
    FROM mytable a 
    INNER JOIN 
    (
      select customer, max(date_column) as mdate
      from mytable 
      group by customer 
    ) b ON a.customer = b.customer
       AND a.date_column = b.mdate
    

    【讨论】:

      猜你喜欢
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      • 2018-10-17
      • 2021-05-18
      • 2020-01-31
      • 2020-10-09
      • 1970-01-01
      • 2013-07-27
      相关资源
      最近更新 更多