我正在尝试从查询中获取rowid。我的疑问是:
表:test(PersonId number,AssetId number);
查询:
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。谁能在这里抛出一些观点。感谢。
答案 0 :(得分:2)
尝试在with子查询中包含rowid(我使用了别名)
with abc as(
select
personid ,
rowid as r,
row_number() over(partition by personid order by personid,carid) rnk
from test
/***This was unwanted in question***/
--group by personid,carid,rowid
)
select r, personid, rnk
from abc ;
答案 1 :(得分:0)
将GROUP BY
与ROWID
一起使用不会聚合行,因为ROWID
是唯一的,因此每个组的大小始终为1。
你可以这样做:
SELECT personid,
ROW_NUMBER() OVER ( PARTITION BY personid ORDER BY carid ) AS rnk,
ROWID
FROM test;