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.
编辑
如果您不需要向 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)
| 归档时间: |
|
| 查看次数: |
12716 次 |
| 最近记录: |