2013-02-05 98 views
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 

回答

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 with Demo

兩個結果是:

| NAME | MaxCom_Date | 
--------------------- 
| MC | 02/05/2013 | 
| MR | 02/05/2013 | 
| MU | 02/02/2013 | 
1
SELECT name, MAX(date) 
FROM table 
GROUP BY name 
ORDER BY 2; 
+0

感謝spin_eight轉換你在MAX堅持下去()之前.....得到它的工作.. – TinsThom

0

如果您com_date欄是日期格式,您只需執行以下操作:

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

如果你的日期不是日期格式,你需要將它