Tsql 在这种情况下如何使用交叉应用?

Tsql 在这种情况下如何使用交叉应用?,tsql,Tsql,我有一个内联TVF,它接受一个表的主键,并用该主键计算行外的值(实际上是一个表,该值是select的一部分,但不管怎样) 现在我想做这样的事情: SELECT something FROM table1 CROSS APPLY thefunction(table1primarykey) func ON func.computedvalue = func.computedvalue(table2primarykey) 问题是我还没有使用table2,也不能使用它,因为table1和ta

我有一个内联TVF,它接受一个表的主键,并用该主键计算行外的值(实际上是一个表,该值是select的一部分,但不管怎样)

现在我想做这样的事情:

SELECT something
FROM table1
CROSS APPLY thefunction(table1primarykey) func
     ON func.computedvalue = func.computedvalue(table2primarykey)
问题是我还没有使用table2,也不能使用它,因为table1和table2连接的唯一方法是通过相同的函数返回值

我怎么能做这样的事呢?

怎么样

SELECT *
FROM (
    SELECT *
    FROM table1
    CROSS APPLY thefunction(table1primarykey)
) AS t1
INNER JOIN (
    SELECT *
    FROM table2
    CROSS APPLY thefunction(table2primarykey)
) AS t2 ON t1.computedvalue = t2.computedvalue

因此,表1和表2应该通过函数返回的computedvalue列连接起来??我自己找到了解决方案,我刚刚找到了:SELECT*from函数。。。交叉应用功能。。。加入表1中的。。。加入表2关于。。。由于我的函数返回了哪些附加值,这应该可以工作:)谢谢:)