如何从一个col中选择其他值中的最新值的不同值

时间:2014-05-22 16:16:09

标签: sql sql-server distinct

我有2列,名称和datetime2。我想根据thrid col,Date。选择具有最新标记值的所有不同名称。

eg table
name, mark, date
john, 20, 2014-05-17 01:00:01
sally, 30, 2014-05-18 05:00:00
john, 40, 204-05-17 02:00:00
sally, 50, 2014-05-18 04:30:00

result should be - 
john, 40, 2014-05-17 02:00:00
sally, 30, 2014-05-18 05:00:00

我试过

SELECT name, Mark
FROM table
GROUP BY name, date

select TOP 1 Name, Mark ,date  from table group by name, order by date desc 

2 个答案:

答案 0 :(得分:1)

您需要使用subSELECT将记录与最新日期隔离,并使用它来过滤主要查询:

SELECT name, mark
FROM table t1
WHERE date=(
  SELECT MAX(date)
  FROM table t2
  WHERE t2.name=t1.name
)

答案 1 :(得分:0)

这里有一个关于SQL基础知识的好网站,可能对您有用:

http://www.w3schools.com/sql/sql_groupby.asp

它为您提供了示例,您还可以通过在网站中键入自己的SQL来测试它们,或者修改它们的示例以查看效果。