我希望首先使用id desc
对数据进行排序,然后按行分组,最后按行编号。我将在数据表分页中使用该表。
我想根据他们的emp id降序显示员工的Lastname
和Designation
,意味着数据表中的前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中不起作用
由于
答案 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;