首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Teradata中的RowID

Teradata中的RowID
EN

Stack Overflow用户
提问于 2013-01-23 10:30:11
回答 1查看 5.8K关注 0票数 6

我需要使用select语句来提取行ID。类似于甲骨文的行ID的东西。我怎么才能在特拉达做到这一点?我正在尝试以下查询,但它正在抛出错误。

代码语言:javascript
复制
select rowid,emp_id,e_name from test;

Error msg : Syntax error: ROWID not allowed.

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2013-01-23 13:25:54

尝试ROW_NUMBER()窗口聚合函数:

代码语言:javascript
复制
SELECT ROW_NUMBER() OVER(ORDER BY empid) AS RowID_
     , empid
     , empName
  FROM test;

RANK()不同,ROW_NUMBER()窗口聚合不允许在结果集中出现联系。您的另一种选择是在表中使用IDENTITY列,但是这些列很乱,而且会造成问题。如果您需要维护代理密钥,那么在您的ETL处理中更容易合并ROW_NUMBER()

应该注意的是,如果您的ORDER BYPARTITION BY列是倾斜的,那么您在查询计划I中的STAT FUNCTION步骤上的性能就会受到大数据集的影响。PARTITION BY子句是可选的,允许您定义一个窗口,在该窗口中,当分区更改时,ROW_NUMBER()的结果将被重置。不常用于ROW_NUMBER(),但它可能会派上用场。

编辑来使用代理项唯一地标识记录,而不必依赖于表中ETL使用和标识列中的逻辑。正确配置标识列不会在删除记录时重用任何域值。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14477486

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档