sql >> Databasteknik >  >> RDS >> Sqlserver

Para ihop skicka och ta emot datarader 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

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


  1. I mysql, visar databaserna; kommandot listar inte alla mina databaser

  2. Bästa sättet att förvara ett SET större än 64

  3. Hur byter jag ut ett bord i Postgres?

  4. Bulk Infoga till Oracle med .NET