2011-03-17 65 views
4

我有一個函數,它需要2個參數並返回一個表。 是否可以在select中使用此函數並顯示它返回的3列? 這是我的查詢:函數sql加入

select a.PersonId, b.Passportnumber, dbo.fn_Passport(a.PersonId) 
from Person a 

感謝

+0

我把它這是你過去的問題的SQL服務器? – RichardTheKiwi 2011-03-17 07:21:37

回答

10

對於SQL Server 2005 +,你可以使用應用運算符

select a.PersonId, b.Passportnumber, p.col1, p.col2, p.col3 
from Person a 
OUTER APPLY dbo.fn_Passport(a.PersonId) p 

我假定列名插圖col1,col2,col3。

您使用CROSS適用於函數必須返回1行或多行以保留Person記錄時。使用OUTER應用保留人員記錄,即使該功能不生成任何行。基本上

CROSS APPLY similar to INNER JOIN 
OUTER APPLY similar to OUTER JOIN 

How to use APPLY

+0

完美。謝謝。 – 2011-03-17 07:44:45

0

如果你談論fn_Passport-它似乎沒有,它返回一個表。

如果確實如此 - 你可以只選擇需要的列,或者通過交叉連接APPLY