私は2つの表は、AとB 今すぐテーブルAの構造は、そのSQL Sever 2005のLeft Outer Joinで2つの列の差異を見つける方法は?
id stock
37 1
40 1
37 1
40 1
37 1
37 1
のようなもので、Bは、今私は、クエリを書きたいという
id stock
37 1
37 1
40 1
のようなものであると仮定したとしましょう 持っていますそれは私に特定のid株式の合計を与える(テーブルA - テーブルB)、そのIDがテーブルBに存在しない場合は、Aからの在庫だけです。そう私はそのような結果を期待します
id stock
40 1
37 2
私は左の可能なオプションここになります参加することを考えて、私はその
SELECT A.id,
SUM(CAST(isNull(A.Stock, 0) as int) - CAST(isNull(B.Stock, 0) as int))'Stock'
from A
LEFT OUTER JOIN
B
ON A.id = B.id
group by A.id
しかし、問題のようなクエリは以下に示すように上記のクエリが必要なレコードが、間違った数量/ Stocklevelを与えるということです書き込み:
id stock
37 0
40 1
ストックレベルの問題を解決する方法を教えてください。
AとBとの間の唯一の関係はimplictly ROWNUMBERを介して与えられますか。それはテーブルデザインの1つの地獄です。 –
私はこれらの結果が与えられた入力に対して正確であることを非常に疑う。 ID4には何が起こったのですか?なぜ3のid = 1がまだあるのですか? –
表AおよびBでは、これらの表内の他の項目のためにIDが繰り返されます。 –