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

groupbyを使用してテーブルから最後のレコードを選択します

    想定 開始日と終了日は常に最大値になるため、GROUP BYからいくつかの列を削除する必要があります (GROUP BYにすべての列があります DISTINCTを使用するようなものです )そして他の列で集計関数を使用します:

    SELECT UserId,
           MAX(StartDate) AS StartDate,
           MAX(EndDate) AS EndDate
    FROM usersworktime
    GROUP BY UserId;
    

    それ以外の場合は、そうでない場合は、CTEとROW_NUMBERを使用できます。 :

    WITH CTE AS(
        SELECT UserID,
               StartDate,
               EndDate,
               ROW_NUMBER() OVER (PARTITION BY UserID ORDER BY UsersWordTimeID DESC) AS RN
        FROM usersworktime)
    SELECT UserID,
           StartDate,
           EndDate
    FROM CTE
    WHERE RN = 1;
    


    1. 文字列間の類似性を返すOracle関数

    2. oracle sqlを使用して、前月以降のuser_idのデルタを取得するにはどうすればよいですか。

    3. PHPMySQLDelete関数のwhileループ

    4. ActiveRecord ::ConnectionTimeoutError:5.000秒以内にデータベース接続を取得できませんでした(5.000秒待機)