2016-09-30 5 views
-1

У меня есть 3 таблицы, участвующие в этом сценарии. Таблица 1 (временная таблица) имеет некоторые порядковые номера. table2 содержит сведения об этих (и всех других) заказах, но, возможно, данные отсутствуют в нескольких полях. В таблице 3 есть те недостающие детали.SQL Обновление таблицы после сравнения значения с другой таблицей

что мне нужно сделать, выберите каждый заказ из таблицы2, которые находятся в таблице1. В таблице 1 может быть один или несколько заказов. Поэтому для этих заказов мне нужно пойти и проверить table3.fieldx и посмотреть, есть ли там какие-либо материалы. если не null, скопируйте table3.fieldx в table2.fieldx.

некоторая помощь будет принята с благодарностью.

таблицы и данные выборки здесь http://www.sqlfiddle.com/#!6/02947

Спасибо.

+3

Редактировать свой вопрос и предоставить образцы данных и желаемые результаты. –

+0

образец таблицы и данных http://www.sqlfiddle.com/#!6/02947 – Eclipse

ответ

1

Спасибо за sqlfiddle. С образцовыми данными это на самом деле то, с чем мы можем помочь.

Думаете, вы хотите что-то подобное.

update t2 
set fieldx = ISNULL(t3.fieldx, t2.fieldx) 
from #table2 t2 
join #table1 t1 on t1.ord_num = t2.ord_num 
left join #table3 t3 on t3.ord_num = t2.ord_num 
+0

Шон, спасибо за ваше решение. У меня небольшое изменение в данных. Я обновил sqlfiddle http://www.sqlfiddle.com/#!6/6cee5 с моими изменениями. Вероятно, это немного изменит отношения. Пожалуйста, дайте мне знать свой вклад. – Eclipse

+0

Это по-прежнему почти то же самое. Меня беспокоит, что если вы не можете настроить запрос к новым структурам данных, то вы действительно не понимаете, что это делает. Имейте в виду, что вам необходимо поддержать этот запрос, и это будет ваш телефон, который звонит в 3 часа, когда производство не работает. Как насчет того, если вы дадите ему выстрел и посмотрите, сможете ли вы его получить. –

+0

Шон, я действительно сделал. обновление ога набор fieldx = ISNULL (dtl.fieldx, ord.fieldx) из #ord Орд \t присоединиться # TEMP1 TMP на tmp.po_num = ord.po_num \t покинул присоединиться #ord_dtl DTL на dtl.ord_num = tmp.ord_num и dtl.line_num = tmp.line_num – Eclipse

Смежные вопросы