create table Account(A_number number, B_number number, C_number, A_number_mask number as
GENERATED ALWAYS AS IDENTITY, B_number_mask number, C_number_mask )
插入后,表值为
A_number B_number C_number A_mask_number B_mask C_mask
10 100 200 1 NULL NULL
20 100 200 2 NULL NULL
30 101 201 3 NULL NULL
40 102 202 4 NULL NULL
50 103 203 5 NULL NULL
60 101 201 6 NULL NULL
现在我必须填充
当我屏蔽或创建序列时,新列也应该具有父列中重复值的重复值。
输出应该是:
A_number B_number C_number A_mask_number B_mask C_mask
10 100 200 1 1 1000
20 100 200 2 1 1000
30 101 201 3 2 2000
40 102 202 4 3 3000
50 103 203 5 4 4000
60 101 201 6 2 2000
我必须将排序列提供给用户而不是父列。 请随意使用序列的任何起始编号。
答案 0 :(得分:0)
使用ROW_NUMBER
创建序列。
SELECT A_number,
B_number,
ROW_NUMBER() OVER(ORDER BY RAND()) as A_number_mask,
ROW_NUMBER() OVER(PARTITION BY B_number ORDER BY RAND()) as B_number_mask
FROM Account
答案 1 :(得分:-1)
您可以使用标识列在插入数据时自动生成唯一编号
create table Account_New(A_number number,
B_number number,
A_number_mask BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH -1, INCREMENT BY -1)
B_number_mask BIGINT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 7000000000, INCREMENT BY 1)
)
显示可能性的两个选项 - 一个是产生负数而另一个是使用未使用的系列。