我创建了一个表值返回函数,它返回一个表。这是我的功能调用如下
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
的动态值逐一传递。
答案 0 :(得分:60)
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