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

Изберете горния 1 ред от всяка група

Ако използвате SQL-Server (минимум 2005), можете да използвате CTE с ROW_NUMBER функция. Можете да използвате CAST за версия, за да получите правилния ред:

WITH cte 
     AS (SELECT id, 
                userid, 
                version, 
                datetime, 
                Row_number() 
                  OVER ( 
                    partition BY userid 
                    ORDER BY Cast(version AS INT) DESC) rn 
         FROM   [dbo].[table]) 
SELECT id, 
       userid, 
       version, 
       datetime 
FROM   cte 
WHERE  rn = 1 
ORDER BY userid

Демо

ROW_NUMBER връща винаги един запис, дори ако има няколко потребители с една и съща (горна) версия. Ако искате да върнете всички „топ-версия-потребителски записи“, трябва да замените ROW_NUMBER с DENSE_RANK .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Клауза SQL NOT IN

  2. w3wp.exe висока мрежа при извикване на база данни

  3. Как да заявите xml колона в tsql

  4. По-добър начин да проверите дали данните вече съществуват и да ги вмъкнете

  5. Изберете данни от XML файл като таблица в TSQL