比较记录并向temp添加条目并在oracle中更新临时特定列值10000条记录

时间:2014-06-23 14:12:55

标签: oracle plsql

我想我需要重新修改信息:(我不知道如何为此编写代码)

表名:test1

以下示例给出了我正在寻找的内容 示例1

初始表 名称参考开始日期结束日期 5001 KLM123 01/01/2011 31/05/2012 5001 KLM111 01/06/2012 31/12/2012 5001 KLM112 01/01/2013 31/12/2013 5001 KLM112 01/01/2014 31/12/2014

决赛桌 名称参考开始日期结束日期 5001 KLM123 01/01/2011 31/05/2012 5001 KLM111 01/06/2012 31/12/2012 5001 KLM112 01/01/2013 2014年12月31日(记录3和4被压缩为一个给定的开始日期和结束日期,因为Name和Ref在此期间保持相同)

示例2

初始表 名称参考开始日期结束日期 5001 KLM123 01/01/2011 31/05/2012 5001 KLM111 01/06/2012 31/12/2012 5001 KLM112 01/01/2013 31/12/2013 5001 KLM112 01/01/2014 12/12/2014 5001 KLM134 01/01/2015 30/06/2015 5001 KLM133 01/07/2015 31/12/2015 5002 KLM144 01/01/2013 31/12/2013 5002 KLM155 01/01/2014 12/12/2014

决赛桌 名称参考开始日期结束日期 5001 KLM123 01/01/2011 31/05/2012 5001 KLM111 01/06/2012 31/12/2012 5001 KLM112 01/01/2013 2014年12月31日 5001 KLM134 01/01/2015 30/06/2015 5001 KLM133 01/07/2015 31/12/2015 5002 KLM144 01/01/2013 31/12/2013 5002 KLM155 01/01/2014 12/12/2014

希望将“决赛桌”作为另一张桌子。那么在PL / SQL中执行此操作的最佳和最佳方式是什么?

日Thnx

1 个答案:

答案 0 :(得分:0)

With CTE as
(Select ID, name, Ref, Start_date, max(End_date) 
from test1 group by ID, Name, Ref, Start_date)
Select T1.ID, T1.Name, T1.Ref, T1.Start_date, T1.End_date
From CTE t1

将此更改为插入内容,我认为它会按照您的要求进行操作...

我认为您需要基于ID,名称,参考和开始日期来自test1的唯一记录。如果没有唯一值,则需要MAX结束日期。