使用select语句在表值函数中传递参数

rah*_*rma 37 sql t-sql sql-server sql-function sql-server-2008

我创建了一个表值返回函数,它返回一个表.这是我的功能调用如下

SELECT * FROM dbo.[StateFixedTaxesCalculation](3020,16,1,1006)
Run Code Online (Sandbox Code Playgroud)

它对我来说工作正常,现在我想在一个选择的语句中使用这个函数调用,所以我可以传递16哪个基本上是employeeId动态的.

所以我决定使用内部连接与该函数返回的表.像这样

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

但是现在我怎么能一个接一个地传递16动态值employeeId.

Rom*_*kar 62

用途outer/cross apply:

select *
from Employee as E
    cross apply dbo.[StateFixedTaxesCalculation](3020, E.EmployeeId, 1, 1006) as TC
Run Code Online (Sandbox Code Playgroud)

如果仍需要过滤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
Run Code Online (Sandbox Code Playgroud)

  • 搜索了几个小时后(主要是错误的关键字可能),我来到了这个问题.它救了我的一天.谢谢 (3认同)