当前位置:   article > 正文

Oracle分组后按组数分页_oracle 分组后 组数

oracle 分组后 组数

Oracle的分页查询使用很简单,但是我遇到的这个需求跟一般的分页有所不一样,需求可以简单描述为:现在表中列orderNo有很多数据(1、2、3、4......),数据也有重复的,需要去取orderNo在前十的所有数据(实际需求是要根据组数进行分页查询),这里不是取前十条数据,而是取orderNo为1-10含有的所有数据,图示如下:

有同事提出使用开窗函数(具体可参看:https://blog.csdn.net/Dongguabai/article/details/83902993),但是开窗函数好像可以解决分组排序,但是却无法解决我这个需求(也许开窗函数可以解决,只是我不够了解):

在没有找到现成可以使用的函数后最终解决方案为:

查询表中所有的distinct orderNo并且进行分页处理,再将获取到的数据根据orderNo关联表中数据(建议关联查询,不要使用in,可参看:https://blog.csdn.net/Dongguabai/article/details/83898856),最终SQL为:

  1. select a3.work_order_no workOrderNo,
  2. a7.fault_name faultName,
  3. a3.key_value keyValue,
  4. a3.type_code typeCode,
  5. a3.tag_name tagName
  6. from (select * from v_mview_tags a1) a3
  7. inner join (select a2.work_order_no, a2.fault_type from fa_info a2) a4
  8. on a4.work_order_no = a3.work_order_no
  9. inner join (select a5.key_value, a5.tag_id, a5.source, a5.org_id as org_no
  10. from bdatag_tag_result a5
  11. where a5.org_id like #{orgId} || '%') a6
  12. on a3.key_value = a6.key_value
  13. and a3.tag_id = a6.tag_id
  14. inner join KN_SP_FAULT a7
  15. on a7.fault_code = a4.fault_type
  16. inner join (select *
  17. from (
  18. select tmp_page.*, rownum row_id
  19. from (
  20. --查询符合要求的 orderNo
  21. select distinct aa3.work_order_no workorderno
  22. from (select * from v_mview_tags aa1) aa3
  23. inner join (select aa2.work_order_no, aa2.fault_type from fa_info aa2) aa4
  24. on aa4.work_order_no = aa3.work_order_no
  25. inner join (select aa5.key_value, aa5.tag_id, aa5.source, aa5.org_id as org_no
  26. from bdatag_tag_result aa5
  27. where aa5.org_id like #{orgId} || '%') aa6
  28. on aa3.key_value = aa6.key_value
  29. and aa3.tag_id = aa6.tag_id
  30. inner join KN_SP_FAULT aa7
  31. on aa7.fault_code = aa4.fault_type
  32. ) tmp_page
  33. where rownum <= #{pageSize}
  34. )
  35. where row_id > #{pageNum}) tt1
  36. on tt1.workorderno = a3.work_order_no order by a3.work_order_no

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/很楠不爱3/article/detail/268556
推荐阅读
相关标签
  

闽ICP备14008679号