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。很抱歉弄得一团糟。这就成功了,谢谢!我显然是想得太多了。这就成功了,谢谢!我显然是想得太多了。这就成功了,谢谢!我显然是想得太多了。这就成功了,谢谢!我显然想得太多了。