2011-04-14 23 views
1

我想制定一个SQL语句,将返回一个字段上不同的记录列表,但如果重复记录(基于一个字段)在日期字段中具有较新的日期,则应将其选作“不同”记录。我需要基于一个字段和日期DISTINCT列表的记录

即。

Field 1 Field 2 Field 3 
A  3/28/11 Jimmy 
A  4/11/11 Tom 
B  3/29/11 Harry 
C  4/12/11 Tom 
C  3/30/11 Jimmy 

将产生:

A  4/11/11 Tom 
B  3/29/11 Harry 
C  4/12/11 Tom 

的 “另类” 场场1

+1

这是什么dbms? – 2011-04-14 20:39:49

+0

如果他们两个有相同的日期会怎么样?你的主键在哪里? – 2011-04-14 20:41:36

回答

2
SELECT A.Field1, A.Field2, A.Field3 
FROM myTable A 
INNER JOIN (
    SELECT B.Field1, MAX(B.Field2) AS MaxDate 
    FROM myTable B 
    GROUP BY B.Field1) AS B 
     ON A.Field1 = B.Field1 AND A.Field2 = B.MaxDate 
ORDER BY A.Field1 

注:我没有尝试过这个查询&我写它的必要内容是。

+0

你有'B,Field1' – RichardTheKiwi 2011-04-14 20:47:52

+0

@Richard:谢谢。 – shahkalpesh 2011-04-14 20:50:30

+0

我怀疑这更接近我的需求,但实际的数据库(Access2007)使用两个表格,看起来更接近: – Mhonzell 2011-04-14 21:14:13

相关问题