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

Prosedur tersimpan, gabungan kiri memberi saya baris duplikat, tetapi saya ingin baris teratas (1) untuk setiap catatan dengan ID yang sama

Pertama saya mencari sesuatu yang tidak akan memberi saya kolom nol dengan gabungan kiri, jadi saya menggunakan,

coalesce(TableC.SomeColumn, -1) As SomeColumnHeHe

Kemudian saya menemukan masalah di mana saya hanya perlu memilih 1 teratas dari gabungan kiri, jadi saya menggunakan OUTER APPLY, seperti yang ditunjukkan di bawah ini,

SELECT Top(1)
    TableA.*,
        TableB.*,
        someFunction(TableA.ID),
        coalesce(TableC.someColumn, -1) As SomeColumnExample,
        TempTable.IDA
 FROM 
    TableA INNER JOIN TableB ON TableA.ID = TableB.IDA
    OUTER APPLY
         (SELECT TOP(1) * FROM TableC where TableC.IDA = TableA.IDA Order By DateAdded Desc )  As TempTable

Where TableA.ID = @ParaID
Order By TableC.DateTime Desc


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara mendapatkan Tanggal Sabtu (Atau Tanggal hari kerja lainnya) - SQL Server

  2. Bagaimana saya bisa memanggil fungsi SQL di C#?

  3. CREATE VIEW harus menjadi satu-satunya pernyataan dalam kumpulan

  4. Kiat untuk Mengurangi Kompleksitas SQL Server Anda

  5. ORDER BY DATE menampilkan NULLS terlebih dahulu kemudian tanggal terbaru