sql >> Database teknologi >  >> RDS >> Sqlserver

Parring af sende og modtag datarækker i 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

Ud fra den begrænsede mængde eksempeldata ser det ud til, at du entydigt kan bestemme et match ved at have et fælles module , user og batch . Jeg er ikke sikker på, hvorfor du kom med dubletter i dine forespørgsler. Det eneste andet problem ser ud til at bruge en ydre sammenføjning til at beholde de "sends", der endnu ikke har en "modtag".

Jeg tror, ​​du stadig ville have alt i resultatet. Hvis du kun ønskede de uparrede scenarier, så tilføj:

where r.Module is null


  1. php problem med flere databaser

  2. Hvordan redigeres lagret procedure i Oracle SQL Developer?

  3. mysql:sløjfe over tabeller og ændre tabel tilføje indeks

  4. jooq enkelt forespørgsel med et til mange forhold