我搜索了很多,但仍然没有机会让子查询同时返回多个列。以下代码有效,但很糟糕:
SELECT
(SELECT Column1 FROM dbo.fnGetItemPath(ib.Id)) AS Col1,
(SELECT Column2 FROM dbo.fnGetItemPath(ib.Id)) AS Col2,
(SELECT Column3 FROM dbo.fnGetItemPath(ib.Id)) AS Col3
FROM ItemBase ib
我实际上不知道如何将ib.Id传递给函数并获取整个Column1,Column2,Column3列而不调用fnGetItemPath函数3次。
提前致谢
答案 0 :(得分:4)
您可以将ti移至“FROM”部分并使用outer apply(或交叉申请)。
自己检查语法,但看起来应该是这样的:
SELECT Column1, Column2, Column3
FROM ItemBase ib
Outer Apply dbo.fnGetItemPath(ib.Id)
答案 1 :(得分:0)
这不起作用吗?
select
(select column1, column2, column3 from dbo.fnGetItemPath(ib.Id))
from ItemBase ib
或者您还需要其他东西吗?