1

我有一张带有名称和订单日期的表格。我正在尝试提出一个查询,以显示每个名称最后一次以相反的顺序排序。因此,每个都命名最新的顺序,但按最早订购的名称排序。

所以有了这个数据

Tom,10/01/2013  
Bob,09/24/2013  
Tom,11/03/2013  
Tom,10/24/2013  
Bill,11/01/2013  
Bob,10/22/2013  

我要这个

Bob,10/22/2013  
Bill,11/01/2013  
Tom,11/03/2013  

我尝试过SELECT * from orders group by name order by -odate 随机或更早于最新日期然后我尝试SELECT * from orders order by -odate group by name 认为它会首先排序但它什么也没返回

谢谢埃德

4

3 回答 3

1
SELECT name, MAX(odate) odate FROM orders GROUP BY name ORDER BY odate
于 2013-11-03T09:06:11.550 回答
0

尝试MAX为您的日期列使用函数

SELECT name, MAX(odate) from orders group by name order by odate
于 2013-11-03T09:03:58.693 回答
0

这里的关键是按名称分组,但要选择您需要的最大值。

分组时,您可以对其他字段执行范围功能。

使用 ORDER BY DESC 将最新的放在首位。

SELECT name, MAX(odate) AS odate FROM orders GROUP BY name ORDER BY odate DESC

SQL 小提琴

于 2013-11-03T09:04:00.347 回答