я мог бы оптимизировать присоединиться, если я мог бы включать в себя идентификатор из таблицы MasterStaging
(промежуточной таблицы):Оптимизировать TSQL За исключением
- Включая идентификатора в
EXCEPT
приведет к искажению результатов со временемID
отMasterStaging
всегда будет отличаться отStatusComparison
MasterStaging.ID
не имеет значения, просто AutoNumber, и не представляет идентификатор клиента- SQL, разработан, чтобы показать отсутствие клиентов, независимо от ID.
- CustomerAccountNo не уникальный номер
Как я могу включать получить идентификатор сверху оптимизировать JOIN
?
Это то, что я хочу:
То же SQL, как показано ниже, но я JOIN
только с помощью ID
) x ON e.ID = x.ID
Вот то, что я до сих пор:
UPDATE ecl.MasterStaging
SET NewAccount = 1
FROM ecl.MasterStaging e WITH (NOLOCK)
JOIN (
SELECT
ISNULL(Usable, 0) AS Usable ,
ISNULL(TypeRC, 0) AS TypeRC ,
ISNULL(CustomerNumber, 0) AS CustomerNumber ,
ISNULL(CustomerAccountNo, 0) AS CustomerAccountNo ,
ISNULL(LoadProfileClass, 0) AS LoadProfileClass ,
ISNULL(MeterNo, 0) AS MeterNo ,
ISNULL(PrimaryPhoneNumber, 0) AS PrimaryPhoneNumber ,
ISNULL(CustomerName1, 0) AS CustomerName1 ,
ISNULL(ServiceAddress1, 0) AS ServiceAddress1 ,
ISNULL(ServiceCity, 0) AS ServiceCity ,
ISNULL(ServiceState, 0) AS ServiceState ,
ISNULL(ServiceZip, 0) AS ServiceZip ,
ISNULL(BillingAddress1, 0) AS BillingAddress1 ,
ISNULL(BillingCity, 0) AS BillingCity ,
ISNULL(BillingState, 0) AS BillingState ,
ISNULL(substring(BillingZip, 1, 5), 0) as BillingZip ,
ISNULL(substring(BillingZip4, 7, 4), 0) as BillingZip4
FROM
ecl.MasterStaging WITH (NOLOCK)
EXCEPT
SELECT Usable ,
TypeRC ,
CustomerNumber ,
CustomerAccountNo ,
LoadProfileClass ,
MeterNo ,
PrimaryPhoneNumber ,
CustomerName1 ,
ServiceAddress1 ,
ServiceCity ,
ServiceState ,
ServiceZip ,
BillingAddress1 ,
BillingCity ,
BillingState ,
BillingZip ,
BillingZip4
FROM ecl.StatusComparison WITH (NOLOCK)
WHERE [Status] <> 'D'
) x
ON
ISNULL(e.Usable,0) = x.Usable AND
ISNULL(e.TypeRC,0) = x.TypeRC AND
ISNULL(e.CustomerNumber,0) = x.CustomerNumber AND
ISNULL(e.CustomerAccountNo,0) = x.CustomerAccountNo AND
ISNULL(e.LoadProfileClass,0) = x.LoadProfileClass AND
ISNULL(e.MeterNo,0) = x.MeterNo AND
ISNULL(e.PrimaryPhoneNumber,0) = x.PrimaryPhoneNumber AND
ISNULL(e.CustomerName1,0) = x.CustomerName1 AND
ISNULL(e.ServiceAddress1,0) = x.ServiceAddress1 AND
ISNULL(e.ServiceCity,0) = x.ServiceCity AND
ISNULL(e.ServiceState,0) = x.ServiceState AND
ISNULL(e.ServiceZip,0) = x.ServiceZip AND
ISNULL(e.BillingAddress1,0) = x.BillingAddress1 AND
ISNULL(e.BillingCity,0) = x.BillingCity AND
ISNULL(e.BillingState,0) = x.BillingState AND
ISNULL(e.BillingZip,0) = x.BillingZip AND
ISNULL(e.BillingZip4,0) = x.BillingZip4
Спасибо за идею .... –