2009-04-21 4 views
3

oracleでは、このテーブルを作成したときにselectに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

Googleはテーブルが大にされていない場合CSUM(1,1)の代わりに、ROWNUMが何をすべきと言います... – HerdplattenToni

答えて

7

これは、あなたがそれを行うことができる方法でありますこれらの列は、割り当てられた番号が連続していることが保証されていないという点で、Oracleのシーケンス概念とは異なります。 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

のTeradataは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 ; 
関連する問題