sql >> Database >  >> RDS >> Sqlserver

Selecteer laatste records uit tabel met group by

Aangenomen dat de begin- en einddatum altijd de hoogste waarden zullen zijn, dan moet u enkele kolommen uit de GROUP BY verwijderen (met alle kolommen in de GROUP BY lijkt een beetje op het gebruik van DISTINCT ) en gebruik een aggregatiefunctie in de andere kolom:

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

Anders, als dat niet het geval is, kunt u een CTE en ROW_NUMBER gebruiken :

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. CakePHP:DB-schemawijzigingen zonder fouten in productie zetten

  2. mysql vind recente gebruikersopmerkingen

  3. Primaire sleutelreeks van PostgreSQL verloren na migratie met AWS DMS

  4. gebruik de opdracht database_name in PostgreSQL