2012-03-27 28 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