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年 –