Oracle 需要查询中的rowid

Oracle 需要查询中的rowid,oracle,oracle11g,Oracle,Oracle11g,我正在尝试从查询中获取rowid。我的问题是: 表:测试(个人编号、资产编号) 查询: with abc as( select personid , row_number() over(partition by personid order by personid,carid) rnk from test --group by personid,carid,rowid ) select rowid, abc.* from abc ; 以及

我正在尝试从查询中获取rowid。我的问题是:

表:测试(个人编号、资产编号)

查询:

with abc as(
select      
       personid , 
       row_number() over(partition by personid order by personid,carid) rnk       
from test
--group by personid,carid,rowid
)
select rowid, abc.* from abc ;
以及它的投掷错误

ORA-01446: cannot select ROWID from,or sample,a view with DISTINCT,GROUP BY etc

是否有任何方法可以获取rowid(通过这种方式),或者不允许使用我在Oracle中尝试的方式获取rowid。有人能在这里发表一些看法吗。谢谢。

尝试在with子查询中包含rowid(我使用了别名)


尝试在with子查询中包含rowid(我使用了别名)


使用
groupby
ROWID
不会聚合行,因为
ROWID
是唯一的,因此每个组的大小始终为1

您只需执行以下操作:

SELECT personid,
       ROW_NUMBER() OVER ( PARTITION BY personid ORDER BY carid ) AS rnk,
       ROWID
FROM   test;

使用
groupby
ROWID
不会聚合行,因为
ROWID
是唯一的,因此每个组的大小始终为1

您只需执行以下操作:

SELECT personid,
       ROW_NUMBER() OVER ( PARTITION BY personid ORDER BY carid ) AS rnk,
       ROWID
FROM   test;

这对我来说毫无意义。你为什么认为你需要ROWID?如果您没有在内部查询中聚合,为什么要使用
分组依据
?您可以看到为什么我需要这个答案中的
分组依据
是完全无用的。在我使用它的地方是有意义的。请检查。但它完全没有实现任何功能<代码>按行ID分组将返回与不分组完全相同的结果。这对我来说没有意义。你为什么认为你需要ROWID?如果您没有在内部查询中聚合,为什么要使用
分组依据
?您可以看到为什么我需要这个答案中的
分组依据
是完全无用的。在我使用它的地方是有意义的。请检查。但它完全没有实现任何功能
group by rowid
将返回与不分组完全相同的结果。