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
Av den begränsade mängden exempeldata verkar det som att du unikt kan bestämma en matchning genom att ha en gemensam module
, user
och batch
. Jag är inte säker på varför du kom på dubbletter i dina frågor. Det enda andra problemet verkar vara att använda en yttre koppling för att behålla de "sändningar" som inte har ett "mottag" ännu.
Jag tror att du fortfarande ville ha allt i resultatet. Om du bara ville ha de oparade scenarierna, lägg till:
where r.Module is null