0

我有一个testing包含两个字段namecom_date. 表中的值如下所示。日期格式是mm/dd/yyyy

Name | Com_Date

MC  |  2/1/2013
MC  |  2/2/2013
MC  |  2/5/2013
MR  |  2/4/2013
MR  |  2/5/2013
MU  |  2/1/2013
MU  |  2/2/2013

我需要根据不同的名称和最新日期查询记录。最新记录优先和基于名称的不同记录。喜欢:

MC  |  2/5/2013
MR  |  2/5/2013
MU  |  2/2/2013
4

3 回答 3

2

您将需要使用具有以下功能的聚合Max()函数GROUP BY

select name, max(com_date) MaxCom_Date
from yourtable
group by name

请参阅SQL Fiddle with Demo

这也可以写成row_number() over(partition by...)

select name, com_date
from
(
  select name, 
    com_date,
    row_number() over(partition by name order by com_date desc) rn
  from yourtable
) 
where rn =1

请参阅带有演示的 SQL Fiddle

两者的结果是:

| NAME | MaxCom_Date |
---------------------
|   MC | 02/05/2013  |
|   MR | 02/05/2013  |
|   MU | 02/02/2013  |
于 2013-02-05T10:33:20.773 回答
1
SELECT name, MAX(date)
 FROM table
 GROUP BY name
 ORDER BY 2;
于 2013-02-05T10:34:05.797 回答
0

如果您的 com_date 列是日期格式,您可以执行以下操作:

SELECT name, TO_CHAR(MAX(com_date), MM/DD/YYYY) FROM testing GROUP BY name ORDER BY name ASC;

如果您的日期不是日期格式,则需要在将其粘贴到 MAX() 之前对其进行转换

于 2013-02-05T10:38:18.060 回答