如何使左外连接与任何sql表的UD函数?

Pen*_*uen 6 sql sql-server sql-server-2005

我有一张桌子.我有一个用户定义的函数(UDF).我的UDF给我一张桌子.我需要左外连接我的表和我的UDF表.

CSh*_*per 12

使用SQL Server 2005的新APPLY子句.APPLY子句允许您将表连接到表值函数.那就让你写一个像这样的查询:

SELECT  C.CustomerID, 
    O.SalesOrderID,
    O.TotalDue
FROM 
    AdventureWorks.Sales.Customer AS C
CROSS APPLY
    AdventureWorks.dbo.fn_GetTopOrders(C.CustomerID, 3) AS O
ORDER BY 
    CustomerID ASC, TotalDue DESC
Run Code Online (Sandbox Code Playgroud)

APPLY子句的作用类似于JOIN,而ON子句有两种形式:CROSS和OUTER.OUTER APPLY子句返回左侧的所有行(Customers)是否返回表值函数中的任何行.如果没有返回任何行,则表值函数返回的列为null.如果表值函数返回行,则CROSS APPLY仅返回左侧的行(Customers).

来源:在SQL Server 2005中使用CROSS APPLY

编辑:正如列文所提到的,只有在需要将表中的值传递给UDF时才需要CROSS APPLY.


Lie*_*ers 3

编辑

如果您不需要向 UDF 传递参数,则只需将表与 UDF 连接即可。如果您需要传递参数,请使用其他答案中提到的 CROSS APPLY。

SELECT *
FROM dbo.YourTable yt
     LEFT OUTER JOIN dbo.UDF_YourUDF() yd ON yd.YourTableID = yt.YourTableID
Run Code Online (Sandbox Code Playgroud)