oracle中,在查询到的某一列结果前面加一列序号,求大神解决下sql

李伟峰丶 2018-04-25 09:54:51
是这样的,我要查的这个字段是有重复值的,sql如下select distinct unit from PTITEMBASEINFO t,因为有这个distinct,所以用rownum好像不行,PL/SQL面select rownum , distinct unit from PTITEMBASEINFO t会报错。有什么办法 可以解决这个问题嘛。而且序列最好不要从1开始,实现的最终效果类似下面:
101 人次
102 个
103 一条肌肉
104 1000ml
.......
...全文
1552 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
李伟峰丶 2018-04-26
  • 打赏
  • 举报
回复
mark一下
卖水果的net 2018-04-25
  • 打赏
  • 举报
回复
-- 用 group by 代替 distinct 

select row_number() over(order by object_type) rn , object_type 
from user_objects 
group by object_type
  • 打赏
  • 举报
回复
SELECT ROWNUM, T1.* FROM (select distinct unit from PTITEMBASEINFO t)T1 或者用开窗函数也行
李伟峰丶 2018-04-25
  • 打赏
  • 举报
回复
引用 1 楼 baidu_36457652 的回复:
SELECT ROWNUM, T1.* FROM (select distinct unit from PTITEMBASEINFO t)T1 或者用开窗函数也行
解决了,ROWNUM也可以和常数相加....ROWNUM+100,这样也能执行。。
李伟峰丶 2018-04-25
  • 打赏
  • 举报
回复
引用 1 楼 baidu_36457652 的回复:
SELECT ROWNUM, T1.* FROM (select distinct unit from PTITEMBASEINFO t)T1 或者用开窗函数也行
谢啦,很有用。不过这里面的数据distinct后还有6000多条,公司要求超过1000的要从101以后进行序列,方便后面维护。这样的话,我是不是应该把这些数据维护到一个新表中,然后用序列和触发器给每个值赋一个序号

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧