存储过程求解思路!

我单身呢 2018-05-24 08:22:15
,这是表A。根据days拆成相对应的行数,比如FLNO=B-1911的这行,days=8,则拆分为 8条数据,dates_starts是最小时间,dates_ends是最大时间,这八行的数据,dates_starts+1直到结束。 相同结构的表B,假如有FLNO-8-1911 的start_days=‘2018-05-28’ and dates_ends=‘2018-05-30’,则删除表A中的FLNO=B-1911这些数据,重新插入 从B表中start_days=‘2018-05-28’ and dates_ends=‘2018-05-30’的三条数据(逻辑和A表拆分一致)。

求大神~~~~~~~
...全文
361 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
引用 7 楼 u014796025 的回复:
[quote=引用 6 楼 baidu_36457652 的回复:] 可以先连表做个判断,到底留哪些时间段,然后递归不是省事些吗
with t1 as ( select flno,jixing,(to_date(dates_start,'yyyy-mm-dd')+level-1) as dates_start,to_date(dates_end,'yyyy-mm-dd') as dates_end ,flag,days,biaoti,act_area from MF_TEST1 connect by level <=days and flno= prior flno and dates_end= prior dates_end and PRIOR DBMS_RANDOM.VALUE IS NOT NULL ), t2 as (select * from MF_TEST1_UPDATE) select flno,jixing,(to_date(dates_start,'yyyy-mm-dd')+level-1) as dates_start,to_date(dates_end,'yyyy-mm-dd') ,flag,days,biaoti,act_area from MF_TEST1_UPDATE connect by level <=days and flno= prior flno and dates_end= prior dates_end and PRIOR DBMS_RANDOM.VALUE IS NOT NULL union all select t1.flno,t1.jixing,t1.dates_start,t1.dates_end ,t1.flag,t1.days,t1.biaoti,t1.act_area from t1 left join t2 on t1.flno=t2.flno where 1=1 and t2.flno is null ORDER BY 3 这样就OK了。谢谢你![/quote] 很强
我单身呢 2018-05-25
  • 打赏
  • 举报
回复
引用 6 楼 baidu_36457652 的回复:
可以先连表做个判断,到底留哪些时间段,然后递归不是省事些吗
with t1 as ( select flno,jixing,(to_date(dates_start,'yyyy-mm-dd')+level-1) as dates_start,to_date(dates_end,'yyyy-mm-dd') as dates_end ,flag,days,biaoti,act_area from MF_TEST1 connect by level <=days and flno= prior flno and dates_end= prior dates_end and PRIOR DBMS_RANDOM.VALUE IS NOT NULL ), t2 as (select * from MF_TEST1_UPDATE) select flno,jixing,(to_date(dates_start,'yyyy-mm-dd')+level-1) as dates_start,to_date(dates_end,'yyyy-mm-dd') ,flag,days,biaoti,act_area from MF_TEST1_UPDATE connect by level <=days and flno= prior flno and dates_end= prior dates_end and PRIOR DBMS_RANDOM.VALUE IS NOT NULL union all select t1.flno,t1.jixing,t1.dates_start,t1.dates_end ,t1.flag,t1.days,t1.biaoti,t1.act_area from t1 left join t2 on t1.flno=t2.flno where 1=1 and t2.flno is null ORDER BY 3 这样就OK了。谢谢你!
  • 打赏
  • 举报
回复
可以先连表做个判断,到底留哪些时间段,然后递归不是省事些吗
我单身呢 2018-05-25
  • 打赏
  • 举报
回复
引用 4 楼 baidu_36457652 的回复:
[quote=引用 3 楼 u014796025 的回复:] [quote=引用 2 楼 baidu_36457652 的回复:] select flno,(dates_start+level-1) as dates_start,dates_end from t1 connect by level <=days and flno= prior flno and dates_end= prior dates_end and PRIOR DBMS_RANDOM.VALUE IS NOT NULL 我没测试 你试一下
大佬,可以的,虽然我看不懂。。。。有点高级了。。。假如有FLNO-8-1911 的start_days=‘2018-05-28’ and dates_ends=‘2018-05-30’,则删除表A中的FLNO=B-1911这些数据,重新插入 从B表中start_days=‘2018-05-28’ and dates_ends=‘2018-05-30’的三条数据,这个是在一起的,是不是得写个存储过程??才能实现[/quote] 我不是大佬啊。。 我没太看懂 你的需求。。。[/quote] 刚刚你写的那段代码,例如FLNO=B-1911,递归,会得到8条记录,start_date从19号到26号。这是没错的。假如有表B,存在一条记录 FLNO=B-1911,start_dates=‘2018-05-28’ and dates_ends=‘2018-05-30’,DAYS=4;则要更新表A的记录,将表A中FLNO-B-1911的所有记录,start_dates从28号 递归至30号 共4条记录。之前的19号到26号的数据就删除了。
  • 打赏
  • 举报
回复
引用 3 楼 u014796025 的回复:
[quote=引用 2 楼 baidu_36457652 的回复:] select flno,(dates_start+level-1) as dates_start,dates_end from t1 connect by level <=days and flno= prior flno and dates_end= prior dates_end and PRIOR DBMS_RANDOM.VALUE IS NOT NULL 我没测试 你试一下
大佬,可以的,虽然我看不懂。。。。有点高级了。。。假如有FLNO-8-1911 的start_days=‘2018-05-28’ and dates_ends=‘2018-05-30’,则删除表A中的FLNO=B-1911这些数据,重新插入 从B表中start_days=‘2018-05-28’ and dates_ends=‘2018-05-30’的三条数据,这个是在一起的,是不是得写个存储过程??才能实现[/quote] 我不是大佬啊。。 我没太看懂 你的需求。。。
我单身呢 2018-05-25
  • 打赏
  • 举报
回复
引用 2 楼 baidu_36457652 的回复:
select flno,(dates_start+level-1) as dates_start,dates_end from t1 connect by level <=days and flno= prior flno and dates_end= prior dates_end and PRIOR DBMS_RANDOM.VALUE IS NOT NULL 我没测试 你试一下
大佬,可以的,虽然我看不懂。。。。有点高级了。。。假如有FLNO-8-1911 的start_days=‘2018-05-28’ and dates_ends=‘2018-05-30’,则删除表A中的FLNO=B-1911这些数据,重新插入 从B表中start_days=‘2018-05-28’ and dates_ends=‘2018-05-30’的三条数据,这个是在一起的,是不是得写个存储过程??才能实现
  • 打赏
  • 举报
回复
select flno,(dates_start+level-1) as dates_start,dates_end from t1 connect by level <=days and flno= prior flno and dates_end= prior dates_end and PRIOR DBMS_RANDOM.VALUE IS NOT NULL 我没测试 你试一下
我单身呢 2018-05-25
  • 打赏
  • 举报
回复
没人吗?呜呜呜
从 WinQSB 系统的菜单选项,可以看出其可用于求解以下管理与决策科学领域的问题: 1.Acceptance Sampling Analysis (缩写为 ASA ,接受抽样分析) 主要用于各种抽样分析、抽样方案的设计以及假设分析; 2.Aggregate Planning (缩写为 AP ,综合计划编制) 用于求解 具有多时期正常排班、加班、分时段、转包生产量、需求量、储存费用、生产费用等复杂的整体综合生产计划的编制方法,求解思路是将问题归结到求解线性规划模型或运输模型; 3.Decision Analysis (缩写为 DA ,决策分析) 用于确定型与风险型决策、贝叶斯决策、决策树、二人零和对策、蒙特卡罗模拟等问题的求解; 4.Dynamic Programming (缩写为 DP ,动态规划) 主要用于最短路问题、背包问题、生产与储存等类问题的求解; 5.Facility Location and Layout (缩写为 FLL ,设备场地布局) 应用于设备场地设计、功能布局、线路均衡布局等类问题的求解; 6.Forecasting and Linear Regression (缩写为 FC ,预测与线性回归) 可进行简单平均、移动平均、加权移动平均、线性趋势移动平均、指数平滑、多元线性回归、 Holt-Winters 季节叠加与乘积算法的运算; 7.Inventory Theory and System (缩写为 ITS ,存储论与存储系统) 用于经济订货批量模型、批量折扣模型、单时期随机模型、多时期动态储存模型、储存控制系统(各种储存策略)等类问题的求解; 8.Job Scheduling (缩写为 JOB ,作业调度) 用于零件加工排序、流水线车间加工排序等; 9.MarKov Process (缩写为 MKP ,马尔科夫过程) 用于求解马尔科夫动态过程问题; 10.Material Requirements Planning (缩写为 MRP ,物料需求计划) 用于求解和分析产品物料的供应链计划,尤其是在自动化生产线中应用广泛; 11.Network Modeling (缩写为 NET ,网络模型) 用于求解运输、指派、最大流、最短路、最小生成树、货郎担等问题; 12.Nonlinear Programming (缩写为 NLP ,非线性规划) 用于有(无)条件约束、目标函数或约束条件非线性以及目标函数与约束条件都非线性等类规划的求解与分析; 13.PERT-CPM (网络计划) 用于路径求解、计划评审技术分析、网络优化、工程完工时间模拟、绘制甘特图与网络图等,有的版本该菜单名为 Project Scheduling ; 14.Quality Control Charts (缩写为 QCC ,质量管理控制图) 用于分析基于统计数据的产品和服务质量分析与控制; 15.Queuing Analysis (缩写为 QA ,排队分析) 用于各种排队模型的求解与性能分析、各种分布模型求解、灵敏度分析、服务能力分析、成本分析等; 16.Queuing System Simulation (缩写为 QSS ,排队系统模拟) 用于进行各种排队系统的仿真模拟与研究分析; 17.Linear and Integer Programming (缩写为 LP-ILP ,线性规划与整数线性规划) 用于求解线性规划、整数规划、对偶问题等,可进行灵敏度分析、参数分析。 18.Goal Programming (缩写为 GP ,目标规划) 用于求解目标规划、多目标线性规划、线性目标规划问题; 19.Quadratic Programming (缩写为 QP ,二次规划) 用于求解线性约束目标函数是二次型的一种非线性规划问题,变量可以取整数。

17,086

社区成员

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

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