How to get the first and the last record per group in SQL Server 2008?

前端 未结 4 2040
梦毁少年i
梦毁少年i 2020-12-19 03:13

As the title suggests, I\'d like to select the first and last row of each set of rows grouped with a GROUP BY.

I\'ve this table with the following data

4条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-19 03:42

    How about using 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
    

提交回复
热议问题