在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
;
答案 0 :(得分:7)
这是你可以做到的:
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 ;
答案 1 :(得分:3)
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。
答案 2 :(得分:1)
这也有效:
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 ;