我在表格中有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语句的末尾,这不起作用。
答案 0 :(得分:3)
这似乎可以做你想要的:
select t.*
from (select t.*
from t
order by partreceiptdate desc
) t
where rownum = 1;
答案 1 :(得分:1)
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
的列名(包含空格) - 至少除非它们用双引号括起来,这是一种非常糟糕的做法,最好避免使用。< / p>