Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Stored procedure, il join sinistro mi dà righe duplicate, ma voglio la riga top(1) per ogni record con lo stesso ID

Per prima cosa stavo cercando qualcosa che non mi desse colonne null con join sinistro, quindi ho usato,

coalesce(TableC.SomeColumn, -1) As SomeColumnHeHe

Poi mi sono imbattuto in un problema in cui dovevo selezionare solo il primo 1 dal join sinistro, quindi ho usato APPLICAZIONE ESTERNA, come mostrato di seguito,

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