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
Dalla quantità limitata di dati campione sembra che tu possa determinare in modo univoco una corrispondenza disponendo di un module
comune , user
e batch
. Non sono sicuro del motivo per cui hai trovato duplicati nelle tue domande. L'unico altro problema sembra essere l'utilizzo di un outer join per mantenere gli "invii" che non hanno ancora una "ricezione".
Penso che tu volessi ancora tutto nel risultato. Se volevi solo gli scenari non accoppiati, aggiungi:
where r.Module is null