分组依据,在SQL Server中将派生表和行号排序在一起

时间:2015-05-07 19:13:25

标签: sql sql-server

我希望首先使用id desc对数据进行排序,然后按行分组,最后按行编号。我将在数据表分页中使用该表。

我想根据他们的emp id降序显示员工的LastnameDesignation,意味着数据表中的前10位是最近加入的人。

下面是我的查询,但是SQL Server不允许在派生表中排序,但是我不能在外部最后一个表中放置顺序,因为这会干扰我的行ID号,正确的数据将不会显示在分页中。

SELECT 
    lastname, designation, 
    row_number() OVER (ORDER BY @@rowcount) AS RowNumber
FROM 
   (SELECT 
        MAX (id), lastname, designation
    FROM employees
    GROUP BY lastname, designation
    ORDER BY MAX(id) DESC) r WHERE r.RowNumber between 1 and 2;

输出:

ID  LastName    Designation
----------------------------
1 | ABC Java  |  Developer
2 | EFG Dot   |  Developer
3 | HIJ PHP   |  Developer
4 | PQR Sql   |  Developer

必需的输出,但没有ID

ID  LastName    Designation        RowNumber
-----------------------------------------------
 4 |    PQR Sql   |  Developer       |    1
 3 |    HIJ PHP   |  Developer       |    2

上面显示的查询在SQL Server中不起作用

由于

1 个答案:

答案 0 :(得分:2)

这是你想要的吗?

SELECT lastname, designation,
       row_number() over (order by max(id) desc) as rownum
FROM employees
GROUP BY lastname, designation
ORDER BY MAX(id) DESC;