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

Lagret procedure, venstre join giver mig dublerede rækker, men jeg vil have top(1) række for hver post med samme ID

Først ledte jeg efter noget, der ikke vil give mig null-kolonner med venstre join, så jeg brugte,

coalesce(TableC.SomeColumn, -1) As SomeColumnHeHe
 

Så stødte jeg på et problem, hvor jeg kun skulle vælge top 1 fra venstre join, så jeg brugte OUTER APPLY, som vist nedenfor,

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. Indstil startværdi for kolonne med autoincrement

  2. Sådan bruges SQL Server AlwaysOn-funktioner

  3. Nulstil automatisk stigningstæller i postgres

  4. Postgres-fejl efter opdatering af TimescaleDB på Ubuntu:fil blev ikke fundet