在这种情况下如何使用CROSS APPLY?

时间:2012-03-27 16:20:05

标签: tsql

我有一个内联TVF接受表的主键,并用该主键计算一行中的值(实际上是一个带有该值的表作为select的一部分,但无论如何)。

现在我想做这样的事情:

SELECT something
FROM table1
CROSS APPLY thefunction(table1primarykey) func
     ON func.computedvalue = func.computedvalue(table2primarykey)

问题是我还没有使用table2,也无法使用它,因为table1和table2连接的唯一方法是通过相同的函数返回值。

我该怎么办?

1 个答案:

答案 0 :(得分:0)

怎么样

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