写sql能不能用去重排序?

企业微信截图_15644541129249.png在sql里面是否可以使用row_number()over(partition by ** order by**) 对order by的进行去重排序,如果不能用这个,有没有可以实现的?

FineReport Cunfan 发布于 2019-7-30 10:05 (编辑于 2019-7-30 10:35)
1min目标场景问卷 立即参与
回答问题
悬赏:4 F币 + 添加悬赏
提示:增加悬赏、完善问题、追问等操作,可使您的问题被置顶,并向所有关注者发送通知
共3回答
最佳回答
0
axingLv6专家互助
发布于2019-7-30 10:13

你的意思是DENSE_RANK()这种?

DENSE_RANK()over (partition by ** order by**)

https://blog.csdn.net/a11112244444/article/details/80453397


  • Cunfan Cunfan(提问者) 和这个不一样,感觉论坛有点不是很方便,您这边可以给一下私人微信嘛?
    2019-07-30 10:21 
  • Cunfan Cunfan(提问者) 上了个图,我想的就是6和7的rn(序号为1)8的序号为2,但是现在的rn好像是对应的数量了,当然这个数据我也想要的
    2019-07-30 10:37 
  • axing axing 回复 Cunfan(提问者) 那就是这个东西,DENSE_RANK()over (partition by province,city order by company_name)
    2019-07-30 10:43 
  • Cunfan Cunfan(提问者) 回复 axing 我能筛选的时候,就是这种有2的,并保留对应的1吗?假如没有2的就全部不要了?
    2019-07-30 11:01 
  • axing axing 回复 Cunfan(提问者) select * from table where company_name in (select company_name from (....) t1 where rn=2)
    2019-07-30 14:31 
最佳回答
0
firegunzxLv6高级互助
发布于2019-7-30 10:09

这个是sqlserver的语法

帆软可以用seq()方法,把父格设置成分组的重复项

  • Cunfan Cunfan(提问者) 现在就是在做一个报表,但是最终结果有点问题。
    2019-07-30 10:24 
最佳回答
0
迎风布阵Lv4见习互助
发布于2019-7-30 10:17

可以用的,在row_number()over(partition by ** order by**) 外面套一层查询就行了,order by 写在外面

  • Cunfan Cunfan(提问者) row_number这个东西不是对所有存在的数据都进行排序嘛?假如相同数据在一起的时候,第一个序号为1,第二个序号为2,但是我想要的不是全部数据相同进行排序,而是部分数据相同就可以排序,其中完全相同的数据序号不加1
    2019-07-30 10:23 
  • 迎风布阵 迎风布阵 回复 Cunfan(提问者) 判断什么数据相同,这个是由partition by 后面的字段决定的,你的部分是指部分字段吧,如果是真的指用一部分数据的话,就看你能不能用where条件把那部分数据提取出来
    2019-07-30 10:29 
  • Cunfan Cunfan(提问者) 回复 迎风布阵 上了个图,我想的就是6和7的rn(序号为1)8的序号为2,但是现在的rn好像是对应的数量了,当然这个数据我也想要的
    2019-07-30 10:36 
  • 迎风布阵 迎风布阵 回复 Cunfan(提问者) 用这个试试row_number() over(partition by ucompanyid,provice,city order by company_name)
    2019-07-30 11:01 
  • Cunfan Cunfan(提问者) 回复 迎风布阵 这个试过了,是不可以的,axing的回复,现在问题到--我能筛选的时候,就是这种有2的,并保留对应的1吗?假如没有2的就全部不要了?--这个了
    2019-07-30 11:06 
  • 3关注人数
  • 648浏览人数
  • 最后回答于:2019-7-30 10:35
    请选择关闭问题的原因
    确定 取消
    返回顶部