SAS, вероятно, умнее с синтаксисом JOIN
.Выше приведен стандартный SQL и допускается.Но я очень не одобряю это.Вы можете попробовать использовать скобки:
INNER JOIN
schemaA.providers prov
ON claims.prov_key = prov.prov_key LEFT JOIN
(schemaA.specialties spec INNER JOIN
schemaA.source src
ON spec.src_key = src.src_key AND src.src_cd <> 'NA'
)
ON prov.prov_key = spec.prov_key
Это может помочь парсеру.В противном случае, это, вероятно, делает то, что вы хотите:
INNER JOIN
schemaA.providers prov
ON claims.prov_key = prov.prov_key LEFT JOIN
schemaA.specialties spec
ON prov.prov_key = spec.prov_key LEFT JOIN
schemaA.source src
ON spec.src_key = src.src_key AND src.src_cd <> 'NA'
Эта версия, безусловно, проще для людей, чтобы разобрать.Процессору SAS также должно быть проще разбирать.
Примечание. Эта версия не точно и не совпадает с вашей версией.Примечательно, что он обрабатывает пропущенные совпадения в spec
и src
немного по-другому.Однако, я предполагаю, что это функционально эквивалентно вашим данным.
РЕДАКТИРОВАТЬ:
Точное совпадение с логикой будет:
INNER JOIN
schemaA.providers prov
ON claims.prov_key = prov.prov_key LEFT JOIN
(SELECT spe.prov_key, . . . -- list the columns you want here
FROM schemaA.specialties spec INNER JOIN
schemaA.source src
ON spec.src_key = src.src_key AND src.src_cd <> 'NA'
) spec
ON prov.prov_key = spec.prov_key