根据其他地点更新一个地点的提前期

时间:2019-07-10 20:07:05

标签: oracle

我正在尝试建立查询以测试某些软件,并且需要调整表上的某些数据。简而言之,对于位于工厂A的所有物料,我想将所有其他工厂的那些物料的交货时间(int)更新为等于工厂A的交货时间。

我期望最终结果将是无论工厂A位于何处的任何产品都具有相同的交货时间。

编辑:让我们将表称为“ PRODUCTION”

操作具有“项目”,“位置”和“交货时间”作为字段。

我尝试的是在工厂A处选择商品的子查询,并将其用作对表的联接以选择商品。

select 
product,
location,
leadtime
from production join
(
    select product from production
    where location = 'F01'
) as a

on item = a.item

where location not like 'F01'

1 个答案:

答案 0 :(得分:1)

我假设您收到错误消息ORA-00933: SQL command not properly ended,因为Oracle不支持AS作为子查询别名。另外,看来item = a.item可能会导致产生错误的错误消息。

由于该产品可以选择存在于其他位置,因此听起来像LEFT JOIN。并且NVL使您可以使用其他工厂的交货时间(如果存在),否则可以使用现有的交货时间。

尝试此查询:

select 
    production.product,
    production.location,
    nvl(a.leadtime, production.leadtime) leadtime
from production
left join
(
    select item, leadtime
    from production
    where location = 'F01'
) a
    on production.item = a.item
where location <> 'F01';