我有一個列C1,C2,C3,C4,C5,C6和計數表。我必須按照C1,C2,C3,C4,C5的順序排列記錄。對於第一條記錄,計數將爲0,那麼如果下一行的C1,C2,C3,C4,C5的值與前一行相同,那麼我必須通過加+1來更新計數列。所以這就是我期待: 表:根據以前的記錄更新列
C1 C2 C3 C4 C5 C6 Count
-------------------------------------------
1 A X X1 AA 123 0
1 A X X1 AA 121 1
1 A X X1 AA 118 2
1 A X X1 AA 117 3
2 B X X2 AA 234 0
8 A Y X3 AA 298 0
8 A Y X3 AA 800 1
我使用Oracle數據庫。我用Cursor with Order by編寫了一個PL SQL塊,然後在BULK COLLECT中使用該遊標,並與前一記錄進行迭代。但是,Count列更新爲意外記錄並花費比預期多得多的時間,表中有大約40萬條記錄。我無法在這裏鍵入我的代碼,因爲實際代碼在客戶端計算機中。任何幫助,高度讚賞。可以使用PL/SQL或簡單SQL。 DB是Oracle。
爲什麼需要用光標和BULK COLLECT編寫一個PL/SQL塊並遍歷每一行等?學習在普通SQL中這樣做的正確方法要容易得多,而且效率要高得多 - 而且學習適當的SQL比學習PL/SQL要花費更少的時間。那麼:爲什麼你需要在表中排序「計數」?在視圖中或在查詢中生成報告是有意義的;將它存放在桌子上只會導致未來的問題。如果將來某行被刪除,或者C3從Y更正爲X,該怎麼辦?現在你必須重新計算整個列!餿主意。 – mathguy