最も簡単な方法はこれです
declare @tbl1 table
(
tbl1ID int,
prop1 varchar(1),
prop2 varchar(2)
)
declare @tbl2 table
(
tbl2ID int,
tbl1ID int
)
select *,
(select count(*) from @tbl2 t2 where t2.tbl1ID = t1.tbl1ID) as cnt
from @tbl1 t1
明らかにこれは単なる生の一例である - 標準ルールは選択しないように適用されます*、等...
午前21時27分で、8月21日'08からUPDATE:
@AlexCuse - はい、完全にパフォーマンスに同意します。
外部結合でそれを書き始めましたが、サンプル出力でカウントと思ったことを見て、テーブルが外部結合されていればカウントが正しく返されませんでした。言い換えれば、ジョインは、レコードが乗算される原因になることはありません(tbl1からの1エントリは、tbl2 = 2の2エントリに一致します)。
だから私は本当にあなたのクエリが返す必要があるの詳細に沸騰すると思います。 22:07で'08 8月21日から
UPDATE:
あなたの質問の他の部分に答えるために - VB関数が移動するための方法ですが?いいえ、絶対にそうではありません。これは単純ではありません。
機能がパフォーマンス上非常に悪い場合、リターンセットの各行がその機能を実行します。
クエリのさまざまな部分を「コンパートメント化」する場合は、ストアドプロシージャのようにアプローチする必要があります。テンポラリテーブルを作成し、クエリの一部を実行して結果をテーブルに挿入し、必要なクエリを実行して、元のテンポラリテーブルを更新します(または、より多くのテンポラリテーブルに挿入します)。