假設我有這兩個表:如何在SELECT語句生成訂單指數值(如在列表的順序)
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
在子選擇的幾個組合來生成ORDER_INDEX
取決於TABLEA_ID值。
- 你有沒有在普通SQL中做到這一點,它甚至可以用普通的SQL。
- 是否有可能通過一個PL/SQL?如果可能的話如何?
非常感謝你提前。
THX這正是我所期待的。非常感謝你。 Thx給其他人:) – Brice 2012-02-17 16:45:32
哦,順便說一句,你的答案有一個小錯誤,因爲'rownumber'或'row_number()'總是返回從1開始的數字,我不得不應用一個減號操作'ROW_NUMBER()OVER(PARTITION BY B.TABLEA_ID ORDER BY B.ID)-1作爲ORDER_INDEX'。無論如何謝謝:) – Brice 2012-02-20 14:28:15
@Brice - 你是對的,我補充說,答案。 – Lamak 2012-02-20 14:36:02