Параметр pass в функции с табличной оценкой с использованием оператора select
Я создал функцию возвращаемой таблицы, которая возвращает мне таблицу. вот вызов моей функции, как следует
SELECT * FROM dbo.[StateFixedTaxesCalculation](3020,16,1,1006)
и его работа ОК для меня, теперь я хочу использовать этот вызов функции в select statment, поэтому я могу передать 16
, который в основном employeeId
динамически.
Итак, я решил использовать внутреннее соединение с таблицей, возвращаемой этой функцией. Как этот
SELECT * FROM Employee as E
INNER JOIN dbo.[StateFixedTaxesCalculation](3020,16,1,1006) as TC ON TC.EmployeeId=E.EmployeeId
но теперь, как я могу передать 16
как динамическое значение всех employeeId
один за другим.
Ответы
Ответ 1
используйте outer/cross apply
:
select *
from Employee as E
cross apply dbo.[StateFixedTaxesCalculation](3020, E.EmployeeId, 1, 1006) as TC
если вам еще нужно отфильтровать TC.EmployeeId = E.EmployeeId
, вы можете сделать это с помощью подзапроса:
select *
from Employee as E
cross apply (
select TT.*
from dbo.[StateFixedTaxesCalculation](3020, E.EmployeeId, 1, 1006) as TT
where TT.EmployeeId = E.EmployeeId
) as TC