2009-04-21 8 views
3

oracle에서는이 테이블을 생성 할 때 선택 항목에 rownum을 사용합니다. 현재 테라 데이타에서는 작동하지 못합니다. 3 열을 함께 사용하지 않으면 정렬 할 수있는 고유 한 값 (많은 중복)이있는 열이 없습니다.작성/삽입시 일련 번호 추가 - Teradata

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 ; 
+0

구글은 테이블이 큰에없는 경우 대신 ROWNUM의 CSUM (1,1)해야 말한다 ... – HerdplattenToni

답변

7

이것은 당신이 그것을 할 수있는 방법입니다 이 열은 할당 된 번호가 순차적으로 보장되지 않는다는 점에서 오라클의 시퀀스 개념과 다릅니다. Teradata의 ID 열은 단순히 행 고유성을 보장하는 데 사용됩니다.

예 :

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); 

부여가, 콜라 데이터 액세스를위한 최고의 차 인덱스이거나 데이터 모델의 다른 테이블과 조인하지 않을 수 있습니다. 그것은 단지 당신이 수있는 테이블에 PI로 사용하는 것을 보여줍니다.

3

테라 데이타는 V2R6.x. 주위에 시작하는 자신의 테이블에 ID 열의 개념이 : 오래된 방법은 같은 것

create table temp1 as 
    select 
    rownum as insert_num, 
    col1, 
    col2, 
    col3 
    from tables a join b on a.id=b.id 
; 
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 ;