[英]Add a sequential number on create / insert - Teradata
在oracle中,我们将在创建此表时在select上使用rownum。 现在在teradata,我似乎无法让它工作。 除非我一起使用3列,否则我没有可以排序的列并且具有唯一值(大量重复)。
旧的方式是这样的,
create table temp1 as
select
rownum as insert_num,
col1,
col2,
col3
from tables a join b on a.id=b.id
;
这是你如何做到的:
create table temp1 as
(
select
sum(1) over( rows unbounded preceding ) insert_num
,col1
,col2
,col3
from a join b on a.id=b.id
) with data ;
Teradata在V2R6.x附近的表上有一个标识列的概念。 这些列与Oracle的序列概念不同,因为分配的数字不保证是顺序的。 Teradata中的标识列仅用于保证行唯一性。
例:
CREATE MULTISET TABLE MyTable
(
ColA INTEGER GENERATED BY DEFAULT AS IDENTITY
(START WITH 1
INCREMENT BY 20)
ColB VARCHAR(20) NOT NULL
)
UNIQUE PRIMARY INDEX pidx (ColA);
当然,ColA可能不是数据访问的最佳主要索引,也可能不是数据模型中其他表的连接。 它只是表明你可以将它用作桌面上的PI。
这也有效:
create table temp1 as
(
select
ROW_NUMBER() over( ORDER BY col1 ) insert_num
,col1
,col2
,col3
from a join b on a.id=b.id
) with data ;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.