0
入力セットをenddateこの、スプリットSTARTDATEに基づいてレコードと
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;
私は
、すなわち、TRL/UFレコードを分割3つのレコードとして出力し、必要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
日付範囲が重複している場合は、2つのBND_CDの各CMPコードごとに分割を実行する必要があります。Cに基づいてレコードをグループ化する必要がありますMP値の場合、TRLがUFと重複する場合、TRLのリワードを分割するか、UFがTRLをオーバーラップする場合、UFレコードを分割する必要があります。
あなたはより多くの行、開始/終了とexampeのための別の行= 2010年4月1日だった場合 - 8月1日を/ 2010? – Aleksej
@Aleksejその後、新しいレコードとしてもう1つの間隔を作成する必要があります。 CMP値に基づいてレコードをグループ化する必要があります。次に、TRLがUFと重複する場合、TRLのリワードを分割するか、UFがTRLをオーバーラップする場合、UFレコードを分割する必要があります。 –
@Aleksej 04/01/2010 - 08/01/2010がTRLレコードとして追加された場合、UFは03/15/2010 - 04/01/2010、04/01/2010-07/01/01の間で分割されます。 2010。または、04/01/2010 - 08/01/2010がUFレコードとして追加された場合、TRLは03/15/2010 - 04/01/2010、04/01/2010-07/01/2010、 -07/01/2010-08/01/2010,08/01/2010-12/15/2014 –