Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Couplage des lignes de données d'envoi et de réception dans 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

D'après la quantité limitée d'échantillons de données, il semble que vous pouvez déterminer une correspondance de manière unique en ayant un module commun , user et batch . Je ne sais pas pourquoi vous avez trouvé des doublons dans vos requêtes. Le seul autre problème semble être l'utilisation d'une jointure externe pour conserver les "envois" qui n'ont pas encore de "réception".

Je pense que tu voulais toujours tout dans le résultat. Si vous ne vouliez que les scénarios non appariés, ajoutez :

where r.Module is null