sql >> Databasteknik >  >> RDS >> Sqlserver

Välj de senaste posterna från tabellen med hjälp av grupp efter

Förutsatt att start- och slutdatum alltid kommer att vara de högsta värdena måste du ta bort några av kolumnerna från GROUP BY (har alla kolumner i GROUP BY är ungefär som att använda DISTINCT ) och använd en aggregatfunktion i den andra kolumnen:

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

Annars, om så inte är fallet, kan du använda en CTE och 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. Hur man kör Opatch i icke interaktiv form

  2. löpande medelvärde i mysql

  3. Left Outer Join returnerar inte alla poster från den primära tabellen

  4. Hur kan jag ändra min standarddatabas i SQL Server utan att använda MS SQL Server Management Studio?