Teradata SQL-将重复值列添加到现有表中
我有一个包含5000条记录的数据集。我想在此数据集中添加3列:第一列的值为1到5,第二列的值为1到4,第三列的值为1到3,如下所示-Teradata SQL-将重复值列添加到现有表中,sql,teradata,Sql,Teradata,我有一个包含5000条记录的数据集。我想在此数据集中添加3列:第一列的值为1到5,第二列的值为1到4,第三列的值为1到3,如下所示- record_id ser_num5 ser_num4 ser_num3 1 1 1 1 2 2 2 2 3 3 3 3 4 4
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;
另外,如果我无法使创建序列正常工作,我是否可以以某种方式将此片段合并到现有的“selectcolumns”语句中。谢谢你的帮助 最简单的方法是对
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
不是真正连续的,则可以使用行编号()
:
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