EmpId EmpName EmpJob MGR HireDate Sal Comm Deptno
7369 SMITH CLERK 7902 1980-12-17 1800.00 NULL 20
7499 ALLEN SALESMAN 7698 1981-02-20 2600.00 300.00 30
7521 WARD SALESMAN 7698 1981-02-22 2250.00 500.00 30
7566 JONES MANAGER 7839 1981-04-02 3975.00 NULL 20
7654 MARTIN SALESMAN 7698 1981-09-28 2250.00 1400.00 30
7698 BLAKE MANAGER 7839 1981-05-01 3850.00 NULL 30
7782 CLARK MANAGER 7839 1981-06-09 3450.00 NULL 10
7788 SCOTT ANALYST 7566 1982-12-09 4000.00 NULL 20
在此表中,我尝试查找5th
和8th
salary
,然后记录所有记录except
5th
和8th
在单表中。我怎样才能得到这个结果?
答案 0 :(得分:5)
您可以使用窗口函数Row_Number()
这将返回所有记录。 5& 8,其次是剩下的
Select *
From (
Select *
,RN = Row_Number() over (Order By Sal Desc)
From YourTable
) A
Order by case when RN in (5,8) then 0 else 1 end,RN
注意:切换到Dense_Rank()以获取关系