我有一个表值函数,它返回给定日期的人员的老板。循环表值函数sql
dbo.Bosses(@empId,@date)
我如何遍历从另一个信息这个功能呢?
也就是说,我想使用有一个日期,员工编号表B,我想用它们作为参数传递给找到表B输入的每一天
Table B EmpId int hours float day datetime creator int
我有一个表值函数,它返回给定日期的人员的老板。循环表值函数sql
dbo.Bosses(@empId,@date)
我如何遍历从另一个信息这个功能呢?
也就是说,我想使用有一个日期,员工编号表B,我想用它们作为参数传递给找到表B输入的每一天
Table B EmpId int hours float day datetime creator int
假设你有SQL服务器2005+
SELECT
*
FROM
TableB
CROSS APPLY
dbo.Bosses(TableB.EmpID, TableB.day) AS bosses
CROSS APPLY只会返回Bosses函数返回结果的结果。类似于INNER JOIN。
OUTER APPLY将返回TableB中每个条目的结果,类似于LEFT JOIN。
您需要使用所有的老板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