Создать новый столбец с уникальным целым числом из трех других столбцов в ANSI SQL - PullRequest
0 голосов
/ 05 июня 2019

У меня есть таблица со многими столбцами.

some_integer_1, some_integer_2, some_date, other
123             9               2019-01-01 "Some text"
123             9               2019-01-01 "Other text"
123             5               2019-02-01 "Hello"
56              3               2019-03-01 "World"

Я хочу создать новую таблицу, которая отображает первые три столбца в уникальное целое число.Итак, если первые три столбца совпадают, то уникальное целое число будет одинаковым:

some_integer_1  some_integer_2  some_date   unique_integer
123             9               2019-01-01  1
123             5               2019-02-01  2
56              3               2019-03-01  3

Какой самый эффективный способ создания этой таблицы и последующего добавления к ней, если у меня есть другая таблица, которая имеет большеданные с использованием Netezza SQL?

1 Ответ

1 голос
/ 05 июня 2019

Вы можете использовать dense_rank() для присвоения значения:

select t.*,
       dense_rank() over (order by some_integer_1, some_integer_2,  some_date) as unique_integer
from t;

Я настоятельно не рекомендую пытаться добавить такой столбец в эту таблицу.Первые три столбца, по-видимому, представляют сущность в некотором роде.Возможно, это пробег или что-то в этом роде.

У вас должна быть отдельная таблица для этой сущности.Этой таблице может быть назначен ключ, который может быть назначен с использованием sequence , если хотите.Затем первые три столбца следует заменить ссылкой внешнего ключа на эту новую таблицу.

...