0
输入集,将记录日期和结束日期
CMP BND_CD STARTDATE ENDDATE
01 UF 03/15/2010 07/01/2010
01 TRL 03/15/2010 12/15/2014
伪数据
CREATE TABLE DATA (CMP, BND_CD, STARTDATE, ENDDATE) AS
SELECT '01','UF', DATE '2010-03-15', DATE '2010-07-01' FROM DUAL UNION ALL
SELECT '01','TRL', DATE '2010-03-15', DATE '2010-12-15' FROM DUAL;
我需要的输出作为3个记录,该分裂TRL/UF的记录,即,
CMP BND_CD STARTDATE ENDDATE
01 UF 03/15/2010 07/01/2010
01 TRL 03/15/2010 07/01/2010
01 TRL 07/01/2010 12/15/2014
如果日期范围相互重叠,则应该为两个BND_CD的每个CMP代码进行拆分。我们必须根据C MP值,那么如果TRL与UF重叠,TRL索引应该被分割,或者如果UFoverlaps TRL,UF记录应该被分割。
如果你有更多的行,为exampe另一行有开始/结束= 04/01/2010 - 08/01/2010? – Aleksej
@Aleksej然后我们应该创建一个更多的间隔,作为一个新的记录。我们必须根据CMP值对记录进行分组,然后如果TRL与UF重叠,TRL索引应该被分割,或者如果UFoverlaps TRL,UF记录应该被分割。 –
@Aleksej如果04/01/2010 - 08/01/2010作为TRL记录添加,则用友应在2010年3月15日 - 2010年4月1日,04/01/2010-07/01/2010。或者如果04/01/2010 - 08/01/2010作为用友记录添加,则TRL应在2010年3月15日 - 2010年4月1日,2010年4月1日/ 2010年7月1日/ 2010年/ -07/01/2010-08/01/2010,08/01/2010-12/15/2014年 –