我需要使用select语句来提取行ID。类似于甲骨文的行ID的东西。我怎么才能在特拉达做到这一点?我正在尝试以下查询,但它正在抛出错误。
select rowid,emp_id,e_name from test;
Error msg : Syntax error: ROWID not allowed.提前谢谢。
发布于 2013-01-23 13:25:54
尝试ROW_NUMBER()窗口聚合函数:
SELECT ROW_NUMBER() OVER(ORDER BY empid) AS RowID_
, empid
, empName
FROM test;与RANK()不同,ROW_NUMBER()窗口聚合不允许在结果集中出现联系。您的另一种选择是在表中使用IDENTITY列,但是这些列很乱,而且会造成问题。如果您需要维护代理密钥,那么在您的ETL处理中更容易合并ROW_NUMBER()。
应该注意的是,如果您的ORDER BY或PARTITION BY列是倾斜的,那么您在查询计划I中的STAT FUNCTION步骤上的性能就会受到大数据集的影响。PARTITION BY子句是可选的,允许您定义一个窗口,在该窗口中,当分区更改时,ROW_NUMBER()的结果将被重置。不常用于ROW_NUMBER(),但它可能会派上用场。
编辑来使用代理项唯一地标识记录,而不必依赖于表中ETL使用和标识列中的逻辑。正确配置标识列不会在删除记录时重用任何域值。
https://stackoverflow.com/questions/14477486
复制相似问题