2012-03-27 30 views
1

我有一个内联TVF接受表的主键,并用该主键(实际上是一个具有该值的表作为选择的一部分,但无论如何)计算出一个值。如何在这种情况下使用CROSS APPLY?

现在我想要做这样的事情:

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

问题是我没有使用表2着呢,不能这样做,因为只有这样,表1和表2的加入是通过相同的函数返回值。

我该怎么做这样的事情?

+0

所以Table 1和Table应该加入通过computedvalue列从thefunction回来? – Umair 2012-03-27 16:30:49

回答

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 
+0

我找到了解决办法我自己,我只是没: SELECT * FROM 功能... CROSS APPLY功能... JOIN上的表1 ... JOIN表2 ON ... 由于什么额外的价值我的功能返回,这应该工作:)谢谢:) – cdbeelala89 2012-03-27 16:42:49