Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL在比较多行时选择更大的日期_Sql_Oracle - Fatal编程技术网

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

SQL在比较多行时选择更大的日期,sql,oracle,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 Fu

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

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);

您可以使用窗口函数来完成以下操作:

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

您可以使用窗口函数来完成以下操作:

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

您可以使用窗口函数来完成以下操作:

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

您可以使用窗口函数来完成以下操作:

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


PARTITION BY是Oracle特有的,不是吗?PARTITION BY不是Oracle特有的,但您的答案更好。不,据我所知,这是ANSI SQL。他的问题被贴上了甲骨文的标签。哦,在重读这个问题之后,我把这个方法做得太难了,假设所有其他专栏实际上都是相同的。没错,我错过了标签。准确地说是ANSI SQL 99。抱歉搞砸了。PARTITION BY是Oracle特有的,不是吗?PARTITION BY不是Oracle特有的,但您的答案更好。不,据我所知,这是ANSI SQL。他的问题被贴上了甲骨文的标签。哦,在重读这个问题之后,我把这个方法做得太难了,假设所有其他专栏实际上都是相同的。没错,我错过了标签。准确地说是ANSI SQL 99。抱歉搞砸了。PARTITION BY是Oracle特有的,不是吗?PARTITION BY不是Oracle特有的,但您的答案更好。不,据我所知,这是ANSI SQL。他的问题被贴上了甲骨文的标签。哦,在重读这个问题之后,我把这个方法做得太难了,假设所有其他专栏实际上都是相同的。没错,我错过了标签。准确地说是ANSI SQL 99。抱歉搞砸了。PARTITION BY是Oracle特有的,不是吗?PARTITION BY不是Oracle特有的,但您的答案更好。不,据我所知,这是ANSI SQL。他的问题被贴上了甲骨文的标签。哦,在重读这个问题之后,我把这个方法做得太难了,假设所有其他专栏实际上都是相同的。没错,我错过了标签。准确地说是ANSI SQL 99。很抱歉弄得一团糟。这就成功了,谢谢!我显然是想得太多了。这就成功了,谢谢!我显然是想得太多了。这就成功了,谢谢!我显然是想得太多了。这就成功了,谢谢!我显然想得太多了。