Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Memasangkan Baris Kirim dan Terima Data dalam 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

Dari jumlah data sampel yang terbatas, tampaknya Anda dapat menentukan kecocokan secara unik dengan memiliki module umum , user dan batch . Saya tidak yakin mengapa Anda membuat duplikat dalam kueri Anda. Satu-satunya masalah lain tampaknya menggunakan gabungan luar untuk menjaga "pengiriman" yang belum memiliki "terima".

Saya pikir Anda masih menginginkan semuanya dalam hasil. Jika Anda hanya menginginkan skenario yang tidak berpasangan, tambahkan:

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. Paket SSIS gagal dengan kesalahan Jika driver 64-bit tidak diinstal, jalankan dalam mode 32-bit

  2. Cara membuat server tertaut untuk SQL Server 2008 di mana kami memiliki database dari tahun 2000 dan 2005

  3. Bagaimana menemukan semua nama kolom dari sinonim

  4. ROLLBACK TRUNCATE di SQL Server

  5. Nama instance default dari SQL Server Express