2013-10-24 67 views
36

我創建了一個表值返回函數,它返回一個表。這裏是我的函數的調用進行如下使用select語句在表值函數中傳遞參數

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

,其工作對我來說好了,現在我想在選擇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一個動態值。

回答

56

使用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 
+0

感謝它爲我工作。我有一些更多的困難,但我作爲一個單獨的問題發佈。 – rahularyansharma

+3

搜索了幾個小時後(主要是關於錯誤的關鍵字可能),我來到這個問題。它拯救了我的一天。謝謝 –

+0

在這一個很棒的工作,我不會經常使用交叉應用,所以我總是必須去查看它:) – jediCouncilor