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()中之前对其进行转换