我在一张表中有4列

我只想根据最大接收日期返回一条记录,这将是表中的第一行(部分接收日期为03/31/2015)。
我试过了
RANK() OVER (PARTITION BY Company Part Number,Manufacturer Part Number
ORDER BY Part Receipt Date DESC,Order Number DESC) = 1在WHERE语句的末尾,这是行不通的。
发布于 2017-01-04 00:51:53
像rank()这样的分析函数在SELECT子句中是可用的,它们不能在WHERE子句中直接调用。要以您想要的方式使用rank(),必须在子查询中声明它,然后在外部查询的WHERE子句中使用它。就像这样:
select company_part_number, manufacturer_part_number, order_number, part_receipt_date
from ( select t.*, rank() over (partition by... order by...) as rnk
from your_table t
)
where rnk = 1还要注意的是,您不能有像company part number这样的列名(其中包含空格)--除非它们是用双引号括起来的,这是一个非常糟糕的实践,最好避免。
发布于 2017-01-03 22:45:42
这似乎能做你想做的事:
select t.*
from (select t.*
from t
order by partreceiptdate desc
) t
where rownum = 1;https://stackoverflow.com/questions/41453529
复制相似问题