sql >> Databáze >  >> RDS >> Sqlserver

Párování řádků pro odesílání a přijímání dat v 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 omezeného množství ukázkových dat se zdá, že můžete jednoznačně určit shodu pomocí společného module , user a batch . Nejsem si jistý, proč jste ve svých dotazech přišli s duplikáty. Zdá se, že jediným dalším problémem je použití vnějšího spojení k udržení „odeslaných“, které ještě nemají „příjem“.

Myslím, že ve výsledku jsi stejně chtěl všechno. Pokud jste chtěli pouze nepárové scénáře, přidejte:

where r.Module is null


  1. mysql více NEBO NELÍBÍ

  2. Použijte stejný parametr vícekrát v podmínkách WHERE dotazu SQL pro použití v JDBC

  3. Regulární výraz MySQL na indexech

  4. Závažná chyba:Nezachycená chyba:Volání nedefinované funkce sql_regcase