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
Dari jumlah data sampel yang terbatas, tampaknya Anda dapat menentukan kecocokan secara unik dengan memiliki module
umum , user
dan batch
. Saya tidak yakin mengapa Anda membuat duplikat dalam kueri Anda. Satu-satunya masalah lain tampaknya menggunakan gabungan luar untuk menjaga "pengiriman" yang belum memiliki "terima".
Saya pikir Anda masih menginginkan semuanya dalam hasil. Jika Anda hanya menginginkan skenario yang tidak berpasangan, tambahkan:
where r.Module is null