0

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

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 传递给函数并在不调用 fnGetItemPath 函数 3 次的情况下获取整个 Column1、Column2、Column3 列。

提前致谢

4

2 回答 2

4

您可以将 ti 移动到“FROM”部分并使用外部应用(或交叉应用)。

自己检查语法,但它应该看起来像这样:

SELECT Column1, Column2, Column3
FROM ItemBase ib
Outer Apply dbo.fnGetItemPath(ib.Id)
于 2012-05-14T07:02:52.883 回答
0

这不行吗?

select 
     (select column1, column2, column3 from dbo.fnGetItemPath(ib.Id)) 
from ItemBase ib

还是你需要别的东西?

于 2012-05-14T06:55:58.403 回答