Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Parowanie wierszy wysyłania i odbierania danych w 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

Z ograniczonej ilości przykładowych danych wynika, że ​​możesz jednoznacznie określić dopasowanie, mając wspólny module , user i batch . Nie wiem, dlaczego w swoich zapytaniach pojawiły się duplikaty. Jedynym innym problemem wydaje się być użycie zewnętrznego sprzężenia, aby zachować „wysyłki”, które nie mają jeszcze „odbioru”.

Myślę, że nadal chciałeś mieć wszystko w wyniku. Jeśli chcesz tylko niesparowanych scenariuszy, dodaj:

where r.Module is null


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wykonywanie pakietu SSIS jako zadanie SQLAgent

  2. Dodaj logowanie do serwera połączonego w programie SQL Server (przykład T-SQL)

  3. Jak sprawić, by wiodące wyszukiwania pełnotekstowe z użyciem symboli wieloznacznych działały w programie SQL Server?

  4. Czy powinienem używać wbudowanej kolumny varchar(max) czy przechowywać ją w osobnej tabeli?

  5. Wymień wszystkie procedury składowane z nazwą schematu