У меня есть таблица в 2 разных базе данных. Таблица 1 в DataBase1 и Table2 в базе данных2.Многие левые присоединяются к одной таблице
Таблица 1 и Таблица 2 имеют одинаковые столбцы с различным содержанием строк.
Каждая строка соответствует номеру участка (TShipping_Tracking или TShipping_Reference или TShipping_OrderRef или TShipping_Barcode) и идентификатору (TShipping_ID). Ремарка: для каждого участка (строки) только 1 из 4 колонки, связанной с номером посылки, перечисленные выше, не является нулевым
Эти схемы таблицы в каждой базе данных:
create table Database1..Table1 (TShipping_ID varchar(50),TShipping_Tracking varchar(50),TShipping_Reference varchar(50),TShipping_OrderRef varchar(50),TShipping_Barcode varchar(50))
create table Database2..Table2 (TShipping_ID varchar(50),TShipping_Tracking varchar(50),TShipping_Reference varchar(50),TShipping_OrderRef varchar(50),TShipping_Barcode varchar(50))
Более того, я есть таблица Database1..Reject, имеющие одни и те же столбцы, как Table1 (и Table2) TShipping_ID: кроме арматуры
create table Database1..Table3(TShipping_Tracking varchar(50),TShipping_Reference varchar(50),TShipping_OrderRef varchar(50),TShipping_Barcode varchar(50))
Я хочу, чтобы извлечь TShipping_ID посылки, которая не существует в Database1
я сделал следующий запрос, но он имеет очень плохое время отклика:
select isnull(isnull(isnull(D2t1 .TShipping_ID,D2t2.TShipping_ID),D2t3.tshipping_id),D2t4.tshipping_id) as TShipping_ID
from Database1..Table3 D1t3
left join Database1..Table1 D1t1 on D1t3.TShipping_tracking=D1t1.TShipping_tracking
left join Database1..Table1 D1t2 on D1t3.TShipping_Reference=D1t2.TShipping_Reference
left join Database1..Table1 D1t3 on D1t3.TShipping_OrderRef=D1t3.TShipping_OrderRef
left join Database1..Table1 D1t4 on D1t3.TShipping_barcode=D1t4.TShipping_barcode
left join Database2..Table2 D2t1 on D1t3.TShipping_tracking=D2t1.TShipping_tracking
left join Database2..Table2 D2t2 on D1t3.TShipping_Reference=D2t2.TShipping_Reference
left join Database2..Table2 D2t3 on D1t3.TShipping_OrderRef=D2t3.TShipping_OrderRef
left join Database2..Table2 D2t4 on D1t3.TShipping_barcode=D2t4.TShipping_barcode
where D1t1.TShipping_Tracking is null and D1t2.TShipping_Reference is null and D1t3.TShipping_OrderRef is null and D1t4.TShipping_BarCode is null
Кто-нибудь есть лучший способ сделать это?
Благодаря
искать функцию 'coalesce', а не использовать isnulls – Lefty