从ANSI SQL中的其他三列创建具有唯一整数的新列

时间:2019-06-05 17:44:43

标签: sql netezza

我的桌子上有很多列。

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 个答案:

答案 0 :(得分:1)

您可以使用dense_rank()来分配值:

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

我强烈建议您不要尝试在此表中添加此类列。前三列似乎表示某种实体。也许是跑步或类似的事情。

您应该为此实体有一个单独的表。可以为该表分配一个键,如果愿意,可以使用sequence来分配该键。然后应将前三列替换为对该新表的外键引用。