我有一个有两个输出的功能......
dbo.func1(@code) -> Table(out1, out2)
此功能成本太高,需要很长时间才能计算出这两个输出。 我有这样的查询:
SELECT code, name,
(SELECT out1 dbo.func1(code)), (SELECT out2 dbo.func1(code))
FROM MyInnerJoinedTablesResult
但我昂贵的功能是两次调用但是我想在我的表中选择的每个记录调用一次...并且在任何行中产生两列(不是双行)
SELECT code, name,
(out1 in func1), (out2 in func2)
FROM MyInnerJoinedTablesResult
答案 0 :(得分:1)
您需要使用Cross Apply
SELECT code, name, func.out1, func.out2
FROM MyInnerJoinedTablesResult
cross apply dbo.func1(code) as func