Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Сдвояване на редове с данни за изпращане и получаване в 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

От ограниченото количество примерни данни изглежда, че можете уникално да определите съвпадение, като имате общ module , user и batch . Не съм сигурен защо попаднахте на дубликати в заявките си. Единственият друг проблем изглежда е използването на външно присъединяване за запазване на „изпращанията“, които все още нямат „получаване“.

Мисля, че все още искахте всичко в резултата. Ако искате само несдвоените сценарии, добавете:

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. Как да картографирате поле на обект, чието име е запазена дума в JPA

  2. Как да създадете Sql синоним или псевдоним за име на база данни?

  3. Sql LEFT OUTER JOIN с клауза WHERE

  4. Как да създадете таблица с помощта на GUI в SQL Server - SQL Server / T-SQL урок, част 37

  5. MS SQL ON DELETE CASCADE множество външни ключове, сочещи към една и съща таблица?