2017-08-10 16 views
0

私には2つのテーブルABがあります。これらの2つの表には、特定の一般的な列があります。col1col2です。今私が得ようとしているのはAからの合計とBの合計です。以下は私が今使っている質問です。類似の列を持つ2つのテーブルを結合することによる不正確な合計

select 
col1 as W_NAME, 
col2 as I_NAME, 
NVL(sum(a.accepted),0) as RECEIVED_QTY, 
NVL(sum(b.issue),0) as ISSUE_QTY 

from TABLE1 a, TABLE2 b 
where a.col1=b.col1 and a.col2=b.col2 
group by col1, col2 

データは、次の形式でテーブルに格納されます。私のクエリで

TABLE1 

col1  col2   accepted 
data1  val1   500 
data1  val1   200 
data2  val1   300 
data2  val2   200 

TABLE2 

col1  col2   issue 
data1  val1   100 
data1  val1   50 
data2  val2   100 

私は次の形式でデータを取得しようとしています、

col1  col2 accepted issue 
data1 val1  700  150 
data2 val1  300  0 
data2 val2  200  100 

は、私はどちらかのいくつかの行をしないのですか表示さ合計が台無しにされます。助言がありますか。ありがとう。

+1

合計を実行してから参加する必要があります。 – Steven

+0

ありがとう、私はまだコーヒーがありませんでした。 – unkn0wn

答えて

1
with TABLE1_sum as (
select 
col1 as W_NAME, 
col2 as I_NAME, 
NVL(sum(a.accepted),0) as RECEIVED_QTY 
from TABLE1 a 
group by W_NAME, I_NAME 
), 
TABLE2_sum as (
select 
col1 as W_NAME, 
col2 as I_NAME, 
NVL(sum(b.issue),0) as ISSUE_QTY 
from TABLE2 b 
group by W_NAME, I_NAME 
) 
select coalesce(a.W_NAME,b.W_NAME) as W_NAME, 
     coalesce(a.I_NAME,b.I_NAME) as I_NAME, 
     coalesce(RECEIVED_QTY,0) as RECEIVED_QTY, 
     coalesce(ISSUE_QTY,0) as ISSUE_QTY 
from TABLE1_sum 
full outer join TABLE2_sum on a.W_NAME = b.W_NAME and a.I_NAME = b.I_NAME 
関連する問題