sql >> データベース >  >> RDS >> Sqlserver

ストアド プロシージャ、左結合により行が重複しますが、同じ ID を持つ各レコードの top(1) 行が必要です

    最初に、左結合で null 列が得られないものを探していたので、使用しました

    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. Oracleデータアクセスバージョンの問題

    2. GDIリソースリークの処理

    3. PDO例外を処理する方法

    4. `GROUP BY`を使用せずに集計するにはどうすればよいですか?