передать параметр в функцию с табличным значением, используя оператор select

Я создал функцию возврата с табличным значением, которая возвращает мне таблицу. вот вызов моей функции, как показано ниже

SELECT * FROM dbo.[StateFixedTaxesCalculation](3020,16,1,1006)

и он работает нормально для меня, теперь я хочу использовать этот вызов функции в параметре выбора, поэтому я могу передать 16, что в основном employeeId динамически.

Поэтому я решил использовать внутреннее соединение с таблицей, возвращаемой этой функцией. Нравится

SELECT * FROM Employee as E
INNER JOIN  dbo.[StateFixedTaxesCalculation](3020,16,1,1006) as TC   ON TC.EmployeeId=E.EmployeeId

но теперь как я могу передать 16 как динамическое значение всех employeeId один за другим.


person rahularyansharma    schedule 24.10.2013    source источник


Ответы (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
person Roman Pekar    schedule 24.10.2013
comment
Спасибо за его работу. У меня есть еще несколько трудностей, но я публикую их как отдельный вопрос. - person rahularyansharma; 24.10.2013
comment
После нескольких часов поиска (в основном, могут быть неправильные ключевые слова) я пришел к этому вопросу. Это спасло мне день. Спасибо - person Milind Thakkar; 15.10.2014
comment
Отличная работа над этим, я не слишком часто использую кросс-апелляцию, поэтому мне всегда нужно искать его :) - person jediCouncilor; 25.01.2016