2012-03-27 28 views
1

私はテーブルのプライマリキーを受け入れ、そのプライマリキーを持つ行の値を計算するインラインTVFを持っています(実際には、その値をセレクトの一部として持つテーブルですが、何でも)。どのようにCROSS APPLYをこの状況で使用しますか?

今、私はこのような何かをしたい:

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

問題はTABLE1とtable2のは、参加している唯一の方法は、同じ関数の戻りを経由しているので、私は、table2のを使用していない、まだ、およびそれを行うことができなかったです値。

どうすればいいですか?

+0

だから、TABLE1とtable2のはcomputedvalue列がthefunctionから返さを介して接合されなければなりません? – Umair

答えて

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関数を適用する... はJOINのためどのような付加価値の私の機能に が ... ON TABLE2のJOIN ... ON TABLE1返す、これは動作するはずです:)ありがとうとにかく:) – cdbeelala89

関連する問題