【问题标题】:How to generate AUTOMATIC Number in Teradata SQL如何在 Teradata SQL 中生成自动编号
【发布时间】:2014-03-25 18:37:08
【问题描述】:

我想生成AUTOMATIC Number来使用TD SQL,例如如下,

CREATE MULTISET TABLE TEST_TABLE
(
  AUTO_NUMBER INT,
  NAME VARCHAR(10)
)
PRIMARY INDEX (AUTO_NUMBER);

INSERT INTO TEST_TABLE
VALUES('TOM');
INSERT INTO TEST_TABLE
VALUES('JIM');
INSERT INTO TEST_TABLE
VALUES('JAN');

SELECT * FROM TEST_TABLE;

上面的结果是,

1 TOM
2 JIM
3 JAN

【问题讨论】:

  • TERADATA SQL ASSISTENT
  • 嗨,乔,谢谢,teradata 论坛对我来说是个好地方
  • 你真的需要一个没有间隙的序列吗? 1,2,3? IDENTITY 不保证序列号,实际上它不是单个序列,而是每个 AMP/PE 的多个序列。

标签: sql auto-increment teradata


【解决方案1】:

使用以下语法创建列:

SEQ_NUM decimal(10,0) NOT NULL GENERATED ALWAYS AS IDENTITY
           (START WITH 1 
            INCREMENT BY 1 
            MINVALUE 1 
            MAXVALUE 2147483647 
            NO CYCLE)

【讨论】:

  • 这是否适用于已填充行的预先存在的表?
【解决方案2】:

表中通常有一列是唯一的。

如果您不想在表格中添加额外的列,可以使用以下技术在结果集中添加一列。

select RANK() OVER (ORDER BY),T.* SEQ from TABLE T;

它会给你这样的输出:

1 a xx yy 2 b xx yy 3 c xx yy

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-11
    • 2011-09-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-17
    相关资源
    最近更新 更多