2017-01-04 11 views
0

したがって、2つの表があり、2つの他の列が別の表で一致する1つの表の列の合計をSUMとしたい。2つの列が異なる表で一致する列の合計を計算する

table1acc_refbill_noです。 acc_refが異なるがbill_noは1~10とすることができる私はacc_refbill_notran_amntを有するtable2

(SO 2以上acc_refが同じbill_noを有することができます)。 ieach acc_refには複数の行があり、table1に一致する場合は、acc_refbill_noの両方が一致する場合のみ、tran_amntを合計します。

私はこれを試してみましたが、私はエラー

を取得し、これは非常に基本的である場合

select a.acc_ref, a.bill_no 
from table1 a 
where exists (select acc_ref, bill_no, SUM (tran_amount) 
from table2 b 
where a.acc_ref = b.acc_ref 
and a.bill_no = b.bill_no 
group by acc_ref) 

謝罪「SELECT句の列が GROUP BY句に含まれている必要があります」明らかですが、私は苦労しています!

答えて

0

あなたの説明では、table1には有用な情報が含まれていないようです。両方の列がtable2にも存在するためです。だから、table1の他に何も必要なければ、あなたは単にクエリからtable1を削除することができます)。まだあなたの問題であなたは、私はあなたがケースを使用する必要があると考えている単純な

SELECT a.acc_ref, a.bill_no, SUM(b.tran_amount) 
FROM table1 a 
JOIN table2 b ON b.acc_ref = a.acc_ref AND b.bill_no=a.bill_no 
GROUP BY a.acc_ref, a.bill_no 
+0

申し訳ありませんが、私は、TABLE1が、私は他から引き出された情報を含むことを特徴としている必要があります特定の日付のbill_noだけがそのテーブルに含まれるようにします。テーブルtable1を として作成acc_ref、bill_noを選択 からctnotice notice_from> = '01 .04.2014 ' and notice_from <= '31 .03.2015' –

+0

クエリは機能しますか? – Seb

0

に参加する実行する必要があります。

サンプル:

SELECT 
    TABEL1.Id, 
    CASE WHEN EXISTS (SELECT Id FROM TABLE2 WHERE TABLE2.ID = TABLE1.ID) 
     THEN 'TRUE' 
     ELSE 'FALSE' 
    END AS NewFiled 
FROM TABLE1 
関連する問題