首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Oracle SQL中的分区排序(Oracle 11g)

Oracle SQL中的分区排序(Oracle 11g)
EN

Stack Overflow用户
提问于 2017-01-03 22:42:46
回答 2查看 41K关注 0票数 4

我在一张表中有4列

  • 公司零件编号
  • 制造商零件编号
  • 订购号
  • 部分接收日期 例如。

我只想根据最大接收日期返回一条记录,这将是表中的第一行(部分接收日期为03/31/2015)。

我试过了

代码语言:javascript
复制
RANK() OVER (PARTITION BY Company Part Number,Manufacturer Part Number 
            ORDER BY Part Receipt Date DESC,Order Number DESC) = 1

在WHERE语句的末尾,这是行不通的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-04 00:51:53

rank()这样的分析函数在SELECT子句中是可用的,它们不能在WHERE子句中直接调用。要以您想要的方式使用rank(),必须在子查询中声明它,然后在外部查询的WHERE子句中使用它。就像这样:

代码语言:javascript
复制
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这样的列名(其中包含空格)--除非它们是用双引号括起来的,这是一个非常糟糕的实践,最好避免。

票数 3
EN

Stack Overflow用户

发布于 2017-01-03 22:45:42

这似乎能做你想做的事:

代码语言:javascript
复制
select t.*
from (select t.*
      from t
      order by partreceiptdate desc
     ) t
where rownum = 1;
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41453529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档