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

Съхранена процедура, лявото присъединяване ми дава дублиращи се редове, но искам горен (1) ред за всеки запис със същия идентификатор

Първо търсих нещо, което няма да ми даде нулеви колони с ляво съединение, така че използвах,

coalesce(TableC.SomeColumn, -1) As SomeColumnHeHe

След това се натъкнах на проблем, при който трябваше да избера само топ 1 от лявото съединение, така че използвах OUTER APPLY, както е показано по-долу,

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. SQL Server - Дайте разрешение за влизане за достъп за четене до всички съществуващи и бъдещи бази данни

  2. Създаване на база данни в SQL Server 2012, скрипт и използване в 2008?

  3. Цикл върху таблицата (без използване на курсор) за свързване на данни

  4. sp_MSforeachdb:включва само резултати от бази данни с резултати

  5. SQL Server на Linux