Попробуйте следующее. Вы можете редактировать входные данные, чтобы проверить результат.
WITH
A (ID, AV) AS (VALUES (1, 'A1'))
, B (ID, BV) AS (VALUES
(1, 'B1'), (1, 'B2')
--(2, 'B1'), (2, 'B2')
) , C (ID, CV) AS (VALUES
(1, 'C1'), (1, 'C2'), (1, 'C3')
--(2, 'C1'), (2, 'C2'), (2, 'C3')
), D (ID, DV) AS (VALUES
(1, 'D1'), (1, 'D2')
--(2, 'D1'), (2, 'D2')
) , E (ID, EV) AS (VALUES
(1, 'E1'), (1, 'E2'), (1, 'E3')
--(2, 'E1'), (2, 'E2'), (2, 'E3')
)
SELECT A.ID, A.AV, B.BV, C.CV, C1.CV AS CV1, D.DV, E.EV
,
CASE
WHEN B.ID IS NOT NULL THEN 'A+B+C'
WHEN C1.ID IS NOT NULL THEN 'A+C'
WHEN D.ID IS NOT NULL THEN 'A+D'
WHEN E.ID IS NOT NULL THEN 'A+E'
ELSE 'A'
END JOIN_PATH
FROM A
LEFT JOIN
(
B
JOIN C ON C.ID=B.ID
) ON B.ID = A.ID
LEFT JOIN C C1 ON C1.ID = A.ID AND B.ID IS NULL
LEFT JOIN D ON D.ID = A.ID AND B.ID IS NULL AND C1.ID IS NULL
LEFT JOIN E ON E.ID = A.ID AND B.ID IS NULL AND C1.ID IS NULL AND D.ID IS NULL;