В настоящее время я пытаюсь вернуть почтовые индексы для адресов доставки.Проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что некоторые из них являются адресами Ad hoc, поэтому они не относятся к стандарту компаний SiteID
.Каждая запись имеет CompanySiteID
, и это единственная точка, которую я могу JOIN ON
между Ordering Table
и Address Table
.
Что я хочу, чтобы данные делали или если это можно сделать виз условия сказать, что если DeliveryCompanySiteID
пусто, вернуть почтовый индекс для AdHocDeliveryAddressID
, если не найти AddressID
для сайта, а затем найти почтовый индекс для этого AddressID
Ниже приведенобразец таблиц и что я в настоящее время получаю:
Таблица 1 - порядок
CompanySiteID DeliveryCompanySiteID InvoiceCompanySiteID AdHocDeliveryAddressID
8613552 8613552 663401931
94823142 326963198 326963198
633057107 634312178 565578092
Таблица 2 - Адрес
AddressID AddPostCode
663401931 NG1 1PQ
123 S12 1TP
456 S1 9PU
789 S11 1TY
Таблица 3 - сайт компании
CompanySiteID AddressID
8613552 123
94823142 456
633057107 789
Исходя из кода, который я использую ниже, это результат, который я получаю:
Site ID Site PostCode
8613552 S12 1TP
94823142 S1 9PU
633057107 S11 1TY
Причина, по которой я считаю, что это происходит, заключается в том, что мой JOIN
:
Причина, по которой я получаю текущий результат, заключается в том, что мое соединение запрашивает: JOIN SBS.PUB.Address Address_0 ON CompanySite_0.AddressID = Address_0.AddressID
К сожалению, нет другого способа присоединиться к таблицам, так что я чувствую, что мне нужно что-то на месте, которое фактически говорит, что если DeliveryCompanySiteID
пусто, то возвращает почтовый индекс для AdHocDeliveryAddressID
если не найти AddressID
для сайта, а затем найти почтовый индекс для этого AddressID
Пожалуйста, см. Упрощенную версию моего кода:
SELECT
CompanySite_0.CompanySiteID
, Address_0.AddPostCode AS 'Delivery Post Code'
FROM
SBS.PUB.SopOrderItem SopOrderItem_0
JOIN SBS.PUB.CompanySite CompanySite_0 ON SopOrderItem_0.CompanySiteID = CompanySite_0.CompanySiteID
JOIN SBS.PUB.Address Address_0 ON CompanySite_0.AddressID = Address_0.AddressID
ВВ конце я надеюсь, что смогу добраться до позиции, где на основе примера, который я показал выше, результат должен возвращаться как:
Site ID Site PostCode
8613552 NG1 1PQ
94823142 S1 9PU
633057107 S11 1TY
А не как:
Site ID Site PostCode
8613552 S12 1TP
94823142 S1 9PU
633057107 S11 1TY
Надеюсь, я объяснил это достаточно хорошо, так как сейчас пытаюсь объяснить это себе.