oracle根据其他表行级别条件选择查询

时间:2018-11-28 06:43:22

标签: oracle

我想从DelivaryDateRevision少于每个国家/地区的最大修订版本(table#maxrevisions)的table#orders中查找订单号。国家/地区代码不是另一个表的外键。

如果maxrevisions表中缺少国家/地区代码,我可以获取订单表记录。

表:订单

OrderNumber | CountryCode | DelivaryDateRevision
123--------------- IN-------------------9  
234--------------- US-------------------3
238--------------  IN------------------ 3

表:maxrevisions

CountryCode|  MaxRevision
IN ---------------6
US--------------- 4

我的查询:

SELECT distinct o.ordernumber,o.countrycode
FROM orders o
     left outer join maxrevisions m
       on o.CountryCode=m.CountryCode
       and
       o.DelivaryDateRevision<rs.MaxRevision;

但是我得到了错误的结果。我可以在这里得到任何帮助吗?

2 个答案:

答案 0 :(得分:2)

您的主要遗漏似乎是比较两个修订版本的WHERE子句:

SELECT
    o.ordernumber,
    o.countrycode
FROM orders o
LEFT JOIN maxrevisions m
    ON o.CountryCode = m.CountryCode
WHERE
    o.DelivaryDateRevision < m.MaxRevision OR m.MaxRevision IS NULL;

enter image description here

Demo

答案 1 :(得分:0)

Select 
  ordernumber,
  countrycode,
  deliverydateversion 
from orders o 
where deliverydateversion > 
(
  select max(revision) 
  from maxrevisiontab 
  where countrycode= o.countrycode
)

请根据您的结构更改表名和列名。