oracle多表查询结合分组排序

需求:根据用户id,年份、周次查出用户的所有周报信息(用户信息和一年中的所有周次都要显示出来)
查出这个结果:
在这里插入图片描述
1、需要拿到周报表的状态和提交日期,
在这里插入图片描述
2、需要从视图拿到月份和周次

在这里插入图片描述
3、从用户表拿到用户名和密码(该表存有所有用户数据)

在这里插入图片描述

其中用户表的userid和周报表的operid一致,周报表的月份和周次和视图的一致,年份截取视图的vdate前四个字段:
在这里插入图片描述

第二种,先把数据查出来放到临时表,再分组排序(建议):
在这里插入图片描述

--方法一:
      select kv.year,kv.userid,kv.username,kv.vmonth,kv.monthweek,a.remark,a.opertime
      from ap_weekappraise a
      right join(
      
      select min(k.userid) userid,
      min(k.username) username, 
      min(substr(vdate,1,4)) year,
      v.monthweek monthweek,
      min(v.vmonth) vmonth
      from kd_userid k,vweekdate v
      where k.userid='8888' 
      and v.vdate like '2020%'  
      --and v.monthweek='02'
      group by monthweek
      order by monthweek
      )kv
      
      on a.operid=kv.userid and a.vmonthweek=kv.monthweek and a.vmonth=kv.vmonth

--  方法二:


    with temp1 
         as(
           select kv.vdate,kv.userid,kv.username,kv.vmonth,kv.monthweek,a.remark,a.opertime
           from ap_weekappraise a 
           right join(
           select k.userid ,k.username username, v.vdate,v.monthweek monthweek, v.vmonth
           from kd_userid k,vweekdate v
           where k.userid='8888'
           and v.vdate like '2020%'  --and v.monthweek='02'
           order by v.monthweek 
            )kv
           on a.operid=kv.userid and a.vmonthweek=kv.monthweek and a.vmonth=kv.vmonth)
           
           SELECT
           min(substr(vdate,1,4)) year,
           MIN (USERID) USERID,
           MIN (USERNAME) USERNAME,
           MIN (VMONTH) VMONTH,
           MIN (MONTHWEEK) MONTHWEEK,
           MIN (REMARK) REMARK,
           MIN (OPERTIME) OPERTIME
           FROM
           temp1
           GROUP BY MONTHWEEK
           ORDER BY MONTHWEEK


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一种基于Spring Framework的快速开发Web应用程序的框架,而Oracle是一种强大的关系型数据库。在一些大型项目中,我们需要使用多个表进行分页查询,并将查询结果呈现给用户,这时我们可以结合Spring Boot和Oracle实现多表分页查询。 实现多表分页查询需要引入Spring Boot的分页插件和Oracle的JDBC驱动。在查询数据之前,我们需要定义一个分页信息对象,包含要查询的页数、每页的数据量,以及查询结果的排序信息和过滤条件等。然后,我们可以使用Spring Boot提供的JdbcTemplate或MyBatis框架与Oracle数据库进行数据交互。 为了实现多表分页查询,我们需要在SQL语句中使用Join语句将多个表连接起来,并使用分页插件对查询结果进行分页处理。在处理分页查询时,我们可以采用传统的分页方式,即先查询出所有符合条件的记录总数,然后进行分页查询;也可以采用性能更高的Limit方式,直接指定查询结果的起始位置和数目。 在实现多表分页查询时,我们还需要注意查询效率和查询结果的正确性。通常情况下,我们可以对经常被访问和查询的表进行索引优化,提高查询速度。同时,我们还应该注意使用正确的字段进行Join和分组操作,避免查询结果出现重复数据或遗漏数据的情况。 在使用Spring Boot和Oracle进行多表分页查询时,我们需要掌握相关的知识和技术,才能更好地完成项目开发任务。为此,我们可以参考相关的教程和文档,了解其运行原理和应用场景,提高开发效率和质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值