我创建了表值函数。 我这样打电话
select * from dbo.fun_sample(1)
工作正常。我有一张名为Emp的表
Table Emp
Id Name Lname
1 Rani Kale
我的选择声明就像这样
Select id,Name,Lname from Emp
通过将id的值传递给function,我想要获取表(有2列)。但是没有工作
Select id,Name,Lname,(select * from dbo.fun_sample(1)) from Emp
答案 0 :(得分:5)
使用CROSS APPLY
Select e.id,e.Name,e.Lname from Emp e
CROSS APPLY dbo.fun_sample(1)
答案 1 :(得分:1)
我不确定UDF的架构是什么样的,但是这样的事情应该指向正确的方向。
SELECT *
FROM Emp
CROSS APPLY dbo.fun_sample(1)
尽管将1
替换为表中的某些列确实更有意义。除此之外,我并不确定我理解你所寻找的东西,而且我还需要更多的信息。
最终,您最初提到的方法是尝试在单个列中存储多个列(以及行)。这在TSQL中是不可能的。此处使用的CROSS APPLY
可以比作调用INNER JOIN
,除非联接针对每行计算的数据。
如果您的1
是故意的,则使用INNER JOIN
即可。
SELECT *
FROM Emp
INNER JOIN dbo.fun_sample(1) udf ON Emp.[column1] = udf.[column2]
同样,我不能在没有架构或UDF的情况下给出一个有效的例子。