Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Emparelhando Enviar e Receber Linhas de Dados no SQL

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

A partir da quantidade limitada de dados de amostra, parece que você pode determinar exclusivamente uma correspondência tendo um module comum , user e batch . Não sei por que você apresentou duplicatas em suas consultas. O único outro problema parece estar usando uma junção externa para manter os "envios" que ainda não têm um "recebimento".

Acho que você ainda queria tudo no resultado. Se você queria apenas os cenários não pareados, adicione:
where r.Module is null