Я начинаю с SQL-запроса с пары соединений и получаю точные данные, которые ожидаю.Это и есть текущий запрос.
SELECT DISTINCT o.OrganizationHierarchyUnitLevelFourCd, o.OrganizationHierarchyUnitLevelThreeNm, o.OrganizationHierarchyUnitLevelFourNm
FROM Lab_Space l
JOIN Worker w ON l.Contact_WWID = w.WWID AND w.Employee_Status_Code = 'A'
JOIN Org_Hierarchy o ON o.OrganizationHierarchyUnitLevelThreeNm IS NOT NULL AND w.Org_Hierarchy_Unit_Cd = o.OrganizationHierarchyUnitCd
ORDER BY o.OrganizationHierarchyUnitLevelThreeNm, o.OrganizationHierarchyUnitLevelFourNm
Это заканчивается строкой, подобной
1234 |Финансы |IT
Теперь я создал новую таблицу, где я отслеживаю, хочу ли я включить организацию в свой вывод.В этой таблице только два столбца, идентификатор организации и битовое поле.Поэтому я подумал, что смогу LEFT OUTER JOIN
, поскольку во второй таблице не будет данных о всех оргах, поэтому я расширил запрос следующим образом:
SELECT DISTINCT o.OrganizationHierarchyUnitLevelFourCd, o.OrganizationHierarchyUnitLevelThreeNm, o.OrganizationHierarchyUnitLevelFourNm, v.Include
FROM Lab_Space l
JOIN Worker w ON l.Contact_WWID = w.WWID AND w.Employee_Status_Code = 'A'
JOIN Org_Hierarchy o ON o.OrganizationHierarchyUnitLevelThreeNm IS NOT NULL AND w.Org_Hierarchy_Unit_Cd = o.OrganizationHierarchyUnitCd
LEFT OUTER JOIN Validation_Email_Org_Unit_Inclusion v ON o.OrganizationHierarchyUnitCd = v.OrganizationHierarchyUnitCd
ORDER BY o.OrganizationHierarchyUnitLevelThreeNm, o.OrganizationHierarchyUnitLevelFourNm
У меня проблема в том, чтотеперь я получаю строки вроде:
1234 |Финансы |IT |NULL
1234 |Финансы |IT |1
Поскольку таблица Validation_Email_Org_Unit_Inclusion
включает 1
для организации 1234, я ожидаю получить только одну строку со значением 1, не включая строку с NULL.
Что я сделал не так?