2011-06-20 9 views
2

私は与えられた日の人の上司を返すテーブル値関数を持っています。どのようにテーブル値関数をループする

dbo.Bosses(@empId、@date)

は、他からの情報で、この機能によってIループですか?

つまり、私は、日付と従業員IDを持つ表Bを使用したいと私は

 
Table B 
EmpId  int 
hours  float 
day  datetime 
creator int 

答えて

4

は、SQL Serverの2005+

を持っていると仮定すると
SELECT 
    * 
FROM 
    TableB 
CROSS APPLY 
    dbo.Bosses(TableB.EmpID, TableB.day) AS bosses 

CROSS APPLYは、Bosses関数が結果を返す場合にのみ結果を返します。 INNER JOINと同じです。

OUTER APPLYは、LEFT JOINと同様に、TableBのすべてのエントリの結果を返します。

3

は、あなたが使用する必要が表Bに入力される各日のすべてのボスを見つけるために、引数としてそれらを使用したいですAPPLYオペレータ(CROSSまたはOUTERは、前者は後に、INNER JOINに似ている - LEFT JOINまで):

SELECT b.*, a.* 
FROM table_b b 
CROSS APPLY dbo.Bosses(b.emp_id, b.emp_date)a