SQL скрипт для создания генерации последовательных чисел в зависимости от столбца и снова начать с 1 - PullRequest
0 голосов
/ 07 марта 2012

У меня есть таблица с 3 столбцами, один из которых пуст.

это так,

c1    c2    c3
1    1000  
1    1001
1    1004
2    1005
2    1007
3    1009 

Я хочу вставить значения в c3 как

c1    c2    c3
1    1000    1 
1    1001    2
1    1004    3
2    1005    1
2    1007    2
3    1009    1

Кто-нибудь может помочь?

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

Это может быть быстрее, чем вложенный вложенный выбор (но вам нужно его протестировать)

merge into your_table u
using
(
    select c1,
           c2,
           row_number() over (partition by c1 order by c2) as rn
    from your_table
) t on (t.c1 = u.c1 and t.c2 = u.c2)
when matched then
update
    set u.c3 = rn;
2 голосов
/ 07 марта 2012

Самое простое решение - это то, что Пилкроу описывает выше: для каждой записи R c3 равно количеству записей, которые имеют c1, равное R, и c2, которое меньше или равнов ответ на R. Как выражение SQL:

UPDATE table_name t
   SET c3 =
        ( SELECT COUNT(1)
            FROM table_name
           WHERE c1 = t.c1
             AND c2 <= t.c2
        )
;

(Замените table_name на имя вашей таблицы, конечно.)

...