sql >> Base de Datos >  >> RDS >> Sqlserver

Procedimiento almacenado, la combinación izquierda me da filas duplicadas, pero quiero la fila superior (1) para cada registro con la misma ID

Primero estaba buscando algo que no me diera columnas nulas con combinación izquierda, así que usé,

coalesce(TableC.SomeColumn, -1) As SomeColumnHeHe

Luego me encontré con un problema en el que solo necesitaba seleccionar el 1 superior de la combinación izquierda, así que usé APLICACIÓN EXTERNA, como se muestra a continuación,

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