假设我有这两个表格:
我需要一个
TABLEA TABLEB
----------- -----------
ID | NAME ID | TABLEA_ID | NAME
1 | ... 1 | 1 | ...
2 | 2 | 2 | ...
3 | 3 | 2 |
4 | 4 | 2 |
5 | 3 |
6 | 3 |
7 | 4 |
8 | 2 |
我需要一个
SQL SELECT
语句,当 TABLEA.ID = TABLEB.TABLEA_ID
时可以生成这样的结果。请注意,我不关心分组或排序,我只想为每一行相同的 TABLEB.TABLEA_ID
生成一个递增的值。ID | TABLEA_ID | ORDER_INDEX | NAME
1 | 1 | 0 | ...
2 | 2 | 0 | ...
3 | 2 | 1 |
4 | 2 | 2 |
5 | 3 | 0 |
6 | 3 | 1 |
7 | 4 | 0 |
8 | 2 | 3 |
我曾尝试多种子查询结合使用rownum
来生成基于TABLEA_ID值的ORDER_INDEX
,但均未能成功。
- 您有什么提示可以在普通SQL中完成吗?普通SQL是否能实现?
- 如果可能的话,是否可以通过PL/SQL实现?如何实现?
非常感谢您的帮助。
rownumber
或row_number()
始终返回以 1 开头的数字,所以我必须应用减法操作ROW_NUMBER() OVER(PARTITION BY B.TABLEA_ID ORDER BY B.ID) -1 AS ORDER_INDEX
。无论如何,谢谢 :) - bric3