我正在尝试建立查询以测试某些软件,并且需要调整表上的某些数据。简而言之,对于位于工厂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'
答案 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';