select *
from
(select * from T where Action = 'SENT') s
left outer join
(select * from T where Action = 'RECEIVED') r
on r.Module and s.Module and r.User = s.User and r.Batch = s.Batch
Z omezeného množství ukázkových dat se zdá, že můžete jednoznačně určit shodu pomocí společného module
, user
a batch
. Nejsem si jistý, proč jste ve svých dotazech přišli s duplikáty. Zdá se, že jediným dalším problémem je použití vnějšího spojení k udržení „odeslaných“, které ještě nemají „příjem“.
Myslím, že ve výsledku jsi stejně chtěl všechno. Pokud jste chtěli pouze nepárové scénáře, přidejte:
where r.Module is null