【问题标题】:Loop a table valued function sql循环一个表值函数 sql
【发布时间】:2011-09-18 18:47:36
【问题描述】:

我有一个表值函数,它返回一个人在某一天的老板。

dbo.Bosses(@empId, @date)

我如何循环使用来自另一个函数的信息?

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

表 B EmpId 整数 小时浮动 日期时间 创造者诠释

【问题讨论】:

    标签: sql sql-server function


    【解决方案1】:

    假设您拥有 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。

    【讨论】:

      【解决方案2】:

      你需要使用APPLY操作符(CROSSOUTER,前者类似于INNER JOIN,后者类似于LEFT JOIN):

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-07
        • 2019-12-23
        • 1970-01-01
        • 2016-01-04
        • 1970-01-01
        • 2013-03-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多