从子查询中选择多个列

时间:2012-05-14 06:50:36

标签: sql-server-2008 tsql subquery

我搜索了很多,但仍然没有机会让子查询同时返回多个列。以下代码有效,但很糟糕:

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次。

提前致谢

2 个答案:

答案 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

或者您还需要其他东西吗?