SQL Server Использование рекурсивного UDF во внутреннем соединении - PullRequest
2 голосов
/ 20 июля 2011

Ниже запрос не работает.Это говорит о неправильном синтаксисе рядом с "."(erc.bossId), пожалуйста, помогите

select e.employeeId, a.address from empReportingChain erc
inner join employee e on e.employeeId = (select top(1) emp_id_PARENT from fn_core_ReturnEmpParent(erc.bossId) order by rolup_level desc)
inner join address a on a.employeeid= e.employeeid

Спасибо, Shwetabh

Ответы [ 2 ]

2 голосов
/ 20 июля 2011

С MSDN :

Когда пользовательская функция, которая возвращает таблицу, вызывается в предложении FROM подзапроса, аргументы функции не могут ссылаться ни на какие столбцы извнешний запрос.

0 голосов
/ 13 августа 2011

внутренний оператор выбора имеет (erc.bossId) после предложения from, которое вызывает вашу проблему.

Вы пытаетесь ограничить внутренний запрос, подключившись к внешнему? Если нет, удалите (erc.bossId) и ваш запрос будет выполнен.

Если это так, то при условии, что в вашей таблице fn_core_ReturnEmpParent есть столбец bossId, должно работать следующее:

select e.employeeId, a.address 
from empReportingChain erc
inner join employee e on e.employeeId = (
    select top(1) emp_id_PARENT 
    from fn_core_ReturnEmpParent rep
    WHERE erc.bossId = rep.bossId
    order by rolup_level desc
)
inner join address a on a.employeeid= e.employeeid
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...