我有一个包含5000条记录的数据集。我想在此数据集中添加3列:第1列的值为1到5,第2列的值为1到4,第3列的值为1到3,如下所示 -
record_id ser_num5 ser_num4 ser_num3
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 1
5 5 1 2
6 1 2 3
7 2 3 1
8 3 4 2
9 4 1 3
10 5 2 1
11 1 3 2
12 2 4 3
13 3 1 1
14 4 2 2
15 5 3 3
16 1 4 1
17 2 1 2
18 3 2 3
19 4 3 1
20 5 4 2
….
5000
如何在Teradata SQL中执行此操作?我尝试过以下代码,但它没有用 -
CREATE SEQUENCE Test.SerNum5
AS Int
START WITH 1
INCREMENT BY 1
MINVALUE 1
MAXVALUE 5
CYCLE
;
SELECT NEXT VALUE FOR Test.SerNum5;
另外,无论如何,我可以以某种方式将这一部分合并到现有的"选择列"声明,如果我不能使创建序列工作。谢谢你的帮助!
答案 0 :(得分:2)
最简单的方法是使用id
上的算术:
select id,
((id - 1) mod 5) + 1 as sernum_5,
((id - 1) mod 4) + 1 as sernum_4,
((id - 1) mod 3) + 1 as sernum_3
如果id
不是真的连续,您可以使用row_number()
代替:
select id,
((row_number() over (order by id) - 1) mod 5) + 1 as sernum_5,
((row_number() over (order by id) - 1) mod 4) + 1 as sernum_4,
((row_number() over (order by id) - 1) mod 3) + 1 as sernum_3