如何只获取一组数据的最新记录?

时间:2015-03-05 10:33:58

标签: sql

我需要一个帮助来解决这个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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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