【发布时间】:2011-09-18 18:47:36
【问题描述】:
我有一个表值函数,它返回一个人在某一天的老板。
dbo.Bosses(@empId, @date)
我如何循环使用来自另一个函数的信息?
即,我想使用具有日期和员工 ID 的表 B,我想将它们用作参数来查找表 B 中输入的每一天的所有老板
表 B EmpId 整数 小时浮动 日期时间 创造者诠释【问题讨论】:
标签: sql sql-server function
我有一个表值函数,它返回一个人在某一天的老板。
dbo.Bosses(@empId, @date)
我如何循环使用来自另一个函数的信息?
即,我想使用具有日期和员工 ID 的表 B,我想将它们用作参数来查找表 B 中输入的每一天的所有老板
表 B EmpId 整数 小时浮动 日期时间 创造者诠释【问题讨论】:
标签: sql sql-server function
假设您拥有 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。
【讨论】:
你需要使用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
【讨论】: