SQL在比较多行时选择更大的日期

时间:2014-10-21 18:21:34

标签: sql oracle

我有一张我正在使用的表,看起来像这样:

Code    Name           Date
-------------------------------------------
10      General Fund   7/18/2013 1:36:15 PM     
100     Plain Fund     12/31/2099               
10300   Fund Name      8/12/2099                
10300   Fund Name      5/17/2099      
10300   Fund Name      12/31/2099

除了日期之外,有些行是相同的 - 我想按行选择具有最大日期的所有代码,如下所示:

Code    Name           Date
-------------------------------------------
10      General Fund   7/18/2013 1:36:15 PM     
100     Plain Fund     12/31/2099                     
10300   Fund Name      12/31/2099

这是我到目前为止所得到的,但它没有给我预期的结果:

SELECT DISTINCT 
    t1.code, 
    t1.name, 
    t1.date, 
FROM table.fund t1
    INNER JOIN table.fund t2
    ON t1.code = t2.code
        AND TRUNC(t1.date) > TRUNC(t2.date);

2 个答案:

答案 0 :(得分:3)

select code, name, max(date) from your_table group by code, name;

答案 1 :(得分:0)

您可以使用窗口函数来完成此任务:

select
*
from
(
  select
  ROW_NUMBER() OVER (PARTITION BY "TheName" ORDER BY "TheDate" desc) as RN,
  fund.*
  from 
  fund
) t
where t.RN = 1

SQLFiddle