关于oracle distinct语句排序的问题,谁熟悉,进来看看

zg6002 2010-01-26 12:07:40
select distinct(activityname) from tb1 where processid = '9567' 取出来了不重复数据但是我有另外一个CNTID(数字型)字段,是控制activityname字段的顺序的,上面这个语句取出来的数据不能按照CNTID从大到小的顺序排序。

select distinct(activityname),cnt from tb1 where processid = '9567' order by cnt
这句话能查出来但是activityname字段的值又是所有的值了,

怎么才能取出来activityname字段不重复的值并且按CNTID字段的顺序排序?

...全文
580 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxtbotoan 2010-12-31
  • 打赏
  • 举报
回复
6楼sql易懂,但5楼的分析函数用的也不错,我喜欢5楼答案
jane_chen11111 2010-10-14
  • 打赏
  • 举报
回复
ok,很好
coolbaby1984 2010-03-07
  • 打赏
  • 举报
回复
select activityname,cnt,row_number()over(partition by activityname order by cnt) num
from tb1
processid = '9567'
这样就可以
huangyunzeng2008 2010-01-26
  • 打赏
  • 举报
回复
对,oracle不知道该怎么给你排序啊!
duqiangcise 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 suiziguo 的回复:]
一个activityname对应多个CNTID,你要取哪一条?
不同activityname对应的CNTID是否会一样?
[/Quote]


正确!
suiziguo 2010-01-26
  • 打赏
  • 举报
回复
一个activityname对应多个CNTID,你要取哪一条?
不同activityname对应的CNTID是否会一样?
crazylaa 2010-01-26
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 xiaohu8855 的回复:]
楼主,可以结贴了吧,这个可以实现
select  max(cnt) cnt,activityname
      from tb1
      where processid = '9567'
            group by activityname
            order by cnt
[/Quote]支持了,也可以用min、not exists实现
zg6002 2010-01-26
  • 打赏
  • 举报
回复
哈,谢6楼了,就要这样的结果
xiaohu8855 2010-01-26
  • 打赏
  • 举报
回复
楼主,可以结贴了吧,这个可以实现
select max(cnt) cnt,activityname
from tb1
where processid = '9567'
group by activityname
order by cnt
duqiangcise 2010-01-26
  • 打赏
  • 举报
回复
不妨这样实现:
select activityname,cnt
from(
select activityname,cnt,row_number()over(partition by activityname order by cnt) num
from tb1
processid = '9567'
) where num=1;
xiaocao_2005 2010-01-26
  • 打赏
  • 举报
回复
只能做到这样:
select distinct activityname, cnt from tb1 where processid = '9567' order by cnt
结果activityname有可能有重复.

17,086

社区成员

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

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