2016-07-11 14 views
0

私はこのようなコードを持っている:FULL JOINの後に2つのテーブルのIDを結合するにはどうすればよいですか?

SELECT ID, SUMof2016, SUMof2015 
FROM  (SELECT ID, SUMof2016 
      from table2016) t2016 
FULL JOIN 
     (SELECT ID, SUMof2015 
      from table2015) t2015 on t2016.ID = t2015.ID 
GROUP BY ID,SUMof2016, SUMof2015; 

をしかし、このエラーが現れます:

ORA-00918「列あいまいに定義された」 をだから私は

SELECT t2016.ID, SUMof2016, SUMof2015 
    FROM  (SELECT ID, SUMof2016 
       from table2016) t2016 
    FULL JOIN 
      (SELECT ID, SUMof2015 
       from table2015) t2015 on t2016.ID = t2015.ID 
    GROUP BY t2016.ID,SUMof2016, SUMof2015; 

が好きなように変更しかし、私はこれに2015年のIDが表示されないと仮定します。私は2015年と2016年のIDを表示したいと思います。

このエラーが発生しても、2015年と2016年の両方のIDを表示するにはどうすればよいですか?

答えて

2

あなたはid最初の非ヌルを取得するには、​​3210を使用することができます。

coalesce(t2015.ID, t2016.ID) as ID 
1

あなたのクエリがGROUP BYを必要としません。また、サブクエリが必要とされていません。

SELECT COALESCE(t2016.ID, t2015.ID) as ID, SUMof2016, SUMof2015 
FROM table2016 t2016 FULL JOIN 
    table2015 t2015 
    ON t2016.ID = t2015.ID; 

あなたは、両方の年の値を持っていないIDの0の代わりNULLを見たい場合:

SELECT COALESCE(t2016.ID, t2015.ID) as ID, 
     COALESCE(SUMof2016, 0) as SUMof2016, 
     COALESCE(SUMof2015, 0) as SUMof2015 
FROM table2016 t2016 FULL JOIN 
    table2015 t2015 
    ON t2016.ID = t2015.ID; 
関連する問題