Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Изберете последните записи от таблицата, като използвате групиране по

Приемаме че началната и крайната дата винаги ще бъдат най-високите стойности, тогава трябва да премахнете някои от колоните от 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Неуспешно актуализиране на база данни .mdf, защото базата данни е само за четене (приложение за Windows)

  2. Преструктуриране и реорганизиране на индекса на SQL Server

  3. Кои колони обикновено правят добри индекси?

  4. Странен резултат от SQL заявка?

  5. Превръщане на низ, разделен със запетая, в отделни редове