У меня есть таблица с столбцами C1, C2, C3, C4, C5, C6 и Count. Я должен заказать записи, используя порядок по C1, C2, C3, C4, C5. Для первой записи Count будет 0, если значения C1, C2, C3, C4, C5 следующей строки совпадают с предыдущей строкой, тогда я должен обновить столбец Count, добавив +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 DB. Я написал блок PL SQL с курсором с Order by, а затем использовал курсор в BULK COLLECT и повторил каждую запись по сравнению с предыдущей записью. Однако столбец Count обновляется с неожиданной записью и занимает гораздо больше времени, чем ожидалось, таблица имеет около 400 тыс. Записей. Я не могу ввести свой код здесь, поскольку фактический код находится в клиентской машине. Любая помощь высоко ценится. Можно использовать PL/SQL или Simple SQL. DB - это Oracle.
Зачем вам нужно писать блок PL/SQL с помощью курсора BULK COLLECT и перебирать каждую строку и т. Д.? Изучение правильного способа сделать это в простом SQL намного проще и эффективнее - и для изучения правильного SQL для этого требуется гораздо меньше времени, чем для изучения PL/SQL. Тогда: Зачем вам нужен заказ «count» в таблице? Это имеет смысл в представлении или в запросе для создания отчета; ХРАНЕНИЕ его в таблице может вызвать проблемы в будущем. Что делать, если строка удаляется в будущем, или C3 корректируется с Y на X? Теперь вам нужно пересчитать весь столбец! Плохая идея. – mathguy