树形数据表逐级向上汇总更新,求高效SQL范例,具体入内。。
主要数据列有作业编码、作业名称、上级作业编码、计划开始、计划完成、实际开始、实际完成、完成情况(未开始、施工中、完成)等几列。
核心业务操作分为两种,1、编排计划(设置计划开完工),2、盘点计划(设置实际开工、百分比)。
业务逻辑上要求由下往上汇总。如编制计划时,设置好最下级计划(叶子节点)的计划开始、完成实际,自动往上逐级汇总生成上级计划开始、完成(由下级的最小的开始实际、最大的完成得到上级计划开完工);
盘点计划时同理,根据下级计划的实际开完工、完成情况自动往上汇总生成上级计划的实际开完工情况(当所有下级都完成,设置上级计划的开完工、状态为完成;全部都未开始,则上级设为未开始;一部分完成,则只设置开始时间,状态为施工中)。
每一个计划的数据量在1500-2000条左右,叶子节点数约6-800,计划树形一般约5层。数据库为oracle 11g。
目前已经写有几版SQL语句,但总体效率不行,求给力高效SQL……
很久没来CSDN,分可加。。
相关推荐
数据表转化成树形结构
如何把数据库转化成树形显示,整理通过编译版
左侧树形菜单+右侧页面+sql2000
一个页面,左侧是树形菜单,菜单是三级的,右侧根据左侧菜单而响应不同的结果页面,页面和SqlServer2000数据连接,实现了对数据库的插入操作。可以根据自己的需要扩展。
mysql数据表导出生成xml文件和树形结构
输入mysql 的IP,用户名可以浏览mysql数据库中的数据表,并且将数据表格生成Xml文件同时将Xml文件以树的形式展示
SQL处理多级分类,查询结果呈树形结构
这样处理的弊端是:如果数据量大,子分类很多,达到4级以上,这方法处理极端占用数据库连接池 对性能影响很大。 如果用SQL下面的CTE递归处理的话,一次性就能把结果给查询出来,而且性能很不错 比用程序处理(数据量很大的情况),临时表性能更好,更方便 代码如下: with area as( select *,id px,cast(id as nvarchar(4000)) px2 from region where parentid=0 union all select a.*,b.px,b.px2+ltrim(a.region_id) from region a join area b on
Oracle SQL树形结构查询
oracle中的select语句可以用START WITH…CONNECT BY PRIOR子句实现递归查询,connect by 是结构化查询中用到的,其基本语法是: 代码如下:select * from tablename start with cond1 connect by cond2 where cond3; 简单说来是将一个树状结构存储在一张表里,比如一个表中存在两个字段: id,parentid那么通过表示每一条记录的parent是谁,就可以形成一个树状结构。 用上述语法的查询可以取得这棵树的所有记录。 其中COND1是根结点的限定语句,当然可以放宽限定条件,以取得多个根结点,


