Sql 基于两列的不同记录

Sql 基于两列的不同记录,sql,oracle,distinct,Sql,Oracle,Distinct,我有一个表testing,有两个字段name和com\u 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 我需要根据不同的名称和最新日期查询记录。 最新记录基于名称的第一个和不同的记录。 比如: 所有您需要将聚合函数Max()与

我有一个表
testing
,有两个字段
name
com\u 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
我需要根据不同的名称和最新日期查询记录。 最新记录基于名称的第一个和不同的记录。 比如:


所有您需要将聚合函数
Max()
分组依据一起使用

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

这也可以使用(分区依据…)上的
行编号()写入:

两者的结果都是:

| NAME | MaxCom_Date |
---------------------
|   MC | 02/05/2013  |
|   MR | 02/05/2013  |
|   MU | 02/02/2013  |

所有您需要将聚合函数
Max()
分组依据一起使用

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

这也可以使用(分区依据…)上的
行编号()写入:

两者的结果都是:

| NAME | MaxCom_Date |
---------------------
|   MC | 02/05/2013  |
|   MR | 02/05/2013  |
|   MU | 02/02/2013  |

如果com_date列为日期格式,则只需执行以下操作:

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

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

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

SELECT name, TO_CHAR(MAX(com_date), MM/DD/YYYY) FROM testing GROUP BY name ORDER BY name ASC;
如果您的日期不是日期格式,则需要在将其粘贴到MAX()中之前对其进行转换