Обновление времени выполнения для одного местоположения на основе позиции другого местоположения - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь настроить запрос для тестирования некоторого программного обеспечения, и мне нужно настроить некоторые данные в таблицах. Короче говоря, для всех товаров, которые расположены на заводе А, я хочу обновить время выполнения заказа (int) для этих товаров на всех других фабриках, чтобы оно было равно времени выполнения заказа на заводе А.

Я ожидаю, что конечный результат будет иметь одинаковое время выполнения для любого изделия, произведенного на фабрике А, независимо от того, где оно находится.

редактировать: давайте назовем таблицу "ПРОИЗВОДСТВО"

Операция имеет "item", "location" и "leadtime" в качестве полей.

Я пытался выбрать подзапрос элементов на фабрике А и использовать его как объединение с таблицей для выбора элементов.

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 Ответ

1 голос
/ 11 июля 2019

Я предполагаю, что вы получаете сообщение об ошибке ORA-00933: SQL command not properly ended, поскольку Oracle не поддерживает AS для псевдонимов подзапроса.Кроме того, похоже, что item = a.item может привести к неоднозначному сообщению об ошибке.

Поскольку продукт может присутствовать в другом месте, это звучит как LEFT JOINNVL позволяет вам использовать другое заводское время выполнения заказа, если оно существует, иначе использовать существующее время выполнения заказа.

Попробуйте этот запрос:

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';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...