我的桌子上有很多列。
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包含更多数据的表,创建此表然后追加到表的最有效方法是什么?
答案 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来分配该键。然后应将前三列替换为对该新表的外键引用。