Как сделать существующее значение столбца таблицы уникальным в vertica, которые дублируются? - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть таблица вершин "Product", она содержит product_id, order_id и еще несколько столбцов. order_id - это столбец varchar.

у него есть такие данные:

product_id   order_id
1               a:111
2               a:222
3               a:111
2               a:444
1               a:222
4               a:111

теперь я хочу обновить order_id в каждой строке, которая является дубликатом (хочу сделать уникальным). как это:

product_id   order_id
1               a:112
2               a:222
3               a:113
2               a:444
1               a:223
4               a:114

как это сделать?

1 Ответ

0 голосов
/ 02 ноября 2018

Я не очень уверен, что обновление будет правильной идеей для vertica. Однако вы можете использовать приведенный ниже оператор выбора.

INSERT INTO new_table
SELECT product_id
    -- , order_id
    , order_id + ROW_NUMBER() OVER (
        PARTITION BY product_id
        , rank ORDER BY order_id
        ) AS as order_id
FROM (
    SELECT product_id
        , order_id
        , DENSE_RANK() OVER (
            PARTITION BY product_id ORDER BY order_id
            ) AS rank
    FROM abc
    ) sub;

Дайте нам знать, если это работает для вас.

...