db2中ROW_NUMBER() over ()在oracle中怎么写
时间: 2024-03-17 19:42:03 浏览: 70
在Oracle中,ROW_NUMBER()函数的语法和DB2中略有不同,需要使用OVER子句指定窗口,并指定排序方式。以下是在Oracle中使用ROW_NUMBER()函数的语法:
```sql
SELECT ROW_NUMBER() OVER (ORDER BY column1, column2, ...) AS row_num, column1, column2, ...
FROM table_name;
```
其中,ROW_NUMBER()为窗口函数,OVER表示指定窗口,ORDER BY后面是排序的列,AS row_num表示为每一行分配一个唯一的数字,并将其命名为row_num。
例如,以下语句将为表employees中的每一行分配一个唯一的数字,并按照salary从高到低进行排序:
```sql
SELECT ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num, employee_id, first_name, last_name, salary
FROM employees;
```
输出结果类似于:
```
ROW_NUM EMPLOYEE_ID FIRST_NAME LAST_NAME SALARY
1 100 Steven King 24000
2 101 Neena Kochhar 17000
3 102 Lex De Haan 17000
4 145 John Russell 14000
5 146 Karen Partners 13500
... ... ... ... ...
```
可以看到,每一行都被分配了一个唯一的数字,并按照salary从高到低排序。这和在DB2中使用ROW_NUMBER()函数的效果是相同的。
阅读全文