2013-10-24 12 views
36

私はテーブルを返すテーブル値の戻り関数を作成しました。私にとってselect文を使用してテーブル値関数のパラメータを渡します

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

とその作業OKをたどると、ここで私の関数の呼び出しがあり、今私は、selectなステートメントでこの関数呼び出しを使用したいので、私は基本的に動的にemployeeIdある16を渡すことができます。

私はその関数が返すテーブルで内部結合を使用することに決めました。この

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

似ていますが、今どのように私は1つで全てemployeeId 1の動的な値として16を渡すことができます。

答えて

56

使用outer/cross apply:あなたはまだTC.EmployeeId = E.EmployeeIdでフィルタリングする必要がある場合

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

、あなたはサブクエリでこれを行うことができます。私のために

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

この1つの素晴らしい仕事、私は頻繁にあまりにも頻繁に適用するクロスを使用するように取得しない、私はいつもそれを見に行く必要があります:) – jediCouncilor

関連する問題