Ar putea face cu ceva lucru, dar aici este ceva sql
select distinct T.itemid, A.mark as "A.mark", B.mark as "B.mark"
from (select * from A union select * from B) T
left join A on T.itemid = A.itemid
left join B on T.itemid = B.itemid;
Aceasta se bazează pe intrarea stângă, care returnează toate rândurile din tabela originală (în acest caz aceasta este tabelul subselect T). Dacă nu există potriviri în tabelul îmbinat, atunci acesta va seta coloana la NULL.