Это должно работать:
SELECT ISNULL(CHILDREN_TABLE.READ_ACCESS, PARENT_TABLE.READ_ACCESS) AS READ_ACCESS
FROM TABLE AS PARENT_TABLE
LEFT JOIN TABLE AS CHILDREN_TABLE
ON CHILDREN_TABLE.Parent = PARENT_TABLE.Child
Это даст вам дубликаты, хотя (2 строки для Inventory Report
, одна для Stock Alert Report
и одна для Stock Movement Report
) Вы можете решить это с помощью SELECT DISTINCT
...
ИЛИ, я полагаю, добавление GROUP BY в дочернюю таблицу решит дубликат:
SELECT ISNULL(CHILDREN_TABLE.READ_ACCESS, PARENT_TABLE.READ_ACCESS) AS READ_ACCESS
FROM TABLE AS PARENT_TABLE
LEFT JOIN (SELECT Parent, READ_ACCESS FROM TABLE GROUP BY Parent) AS CHILDREN_TABLE
ON CHILDREN_TABLE.Parent = PARENT_TABLE.Child
Теперь вы все равно получите дубликат, если есть ребеноку которого READ_ACCESS
составляет Y
, а у другого READ_ACCESS
составляет N
.Однако это звучит как то, что в любом случае нужно будет обсудить с вашими бизнес-правилами.