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

Как да получите първия и последния запис на група в SQL Server 2008?

Какво ще кажете да използвате ROW_NUMBER :

SQL Fiddle

WITH Cte AS(
    SELECT *,
        RnAsc = ROW_NUMBER() OVER(PARTITION BY [group] ORDER BY val),
        RnDesc = ROW_NUMBER() OVER(PARTITION BY [group] ORDER BY val DESC)
    FROM tbl
)
SELECT
    id, [group], val, start, [end]
FROM Cte
WHERE
    RnAsc = 1 OR RnDesc = 1
ORDER BY [group], val


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. кръстосаното прилагане на xml заявката работи експоненциално по-зле с нарастването на xml документа

  2. Сложна SQL заявка - намиране на елементи, съответстващи на множество различни външни ключове

  3. Променете типа на колона с числа от varchar на int

  4. Списък с низове в SqlCommand през параметри в C#

  5. Три лесни победи за производителност на SQL Server