У меня есть следующее утверждение:
MERGE dbo.SystemCustomer As TARGET
USING (Select *
From dbo.vClients
Where ClientNumber Is Not Null) As SOURCE
On TARGET.CustNumber = SOURCE.ClientNumber
WHEN MATCHED And (TARGET.DisplayCustNumber<>SOURCE.VisualID Or
TARGET.CustName<>ISNULL(SOURCE.CustName,'')
And IsNull(SOURCE.VisualID,'') <> '' And IsNull(TARGET.DisplayCustNumber,'') <> ''
THEN Update Set TARGET.DisplayCustNumber = SOURCE.VisualID,
TARGET.CustName = ISNULL(SOURCE.CustName,'')
WHEN NOT MATCHED BY TARGET
THEN Insert (CustNumber, DisplayCustNumber, CustName)
Values (SOURCE.ClientNumber, SOURCE.VisualID, ISNULL(SOURCE.CustName,''))
WHEN NOT MATCHED BY Source --or IsNull(TARGET.DisplayCustNumber,'') = ''
THEN Delete;
Я хотел бы удалить записи, когда они не сопоставлены по источнику, и когда Target.DisplayCustNumber
пусто или null
(указано в комментарии после оператора "WHEN NOT MATCHED BY Source"
), но, по-видимому, это невозможно по синтаксису.
Как мне обойти это? Заранее спасибо!