循环表值函数sql

时间:2011-06-20 14:56:47

标签: sql sql-server function

我有一个表值函数,可以在给定的一天返回一个人的老板。

  

dbo.Bosses(@empId,@ date)

如何使用另一个函数循环此函数?

即,我想使用具有日期和员工ID的表B,我想使用它们作为参数来查找表B中输入的每一天的所有老板

Table B
EmpId     int
hours     float
day       datetime
creator   int

2 个答案:

答案 0 :(得分:4)

假设您有SQL Server 2005 +

SELECT
  *
FROM
  TableB
CROSS APPLY
  dbo.Bosses(TableB.EmpID, TableB.day) AS bosses

CROSS APPLY仅返回Bosses函数返回结果的结果。类似于INNER JOIN。

OUTER APPLY将返回TableB中每个条目的结果,类似于LEFT JOIN。

答案 1 :(得分:3)

您需要使用APPLY运算符(CROSSOUTER,前者类似于INNER JOIN,后者类似于LEFT JOIN):

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