0
鑑於此表中創建時間表
重疊日期
Insert Into positions (Emp_Id,Gtype,Amt,Start_Date,Stop_Date)
select 'XA0022',1,1000,'01-MAY-2010','08-MAY-2012' from dual union
Select 'XA0022',1,1000,'01-MAY-2010','31-DEC-2012' From Dual Union
Select 'XA0022',2,500,'03-APR-2012','15-JUL-2012' From Dual Union
Select 'XA0022',1,421,'01-MAY-2012','23-MAY-2012' From Dual Union
Select 'XA0022',1,1514,'09-MAY-2012','31-DEC-2012' From Dual union
select 'XA0022',1,600,'24-MAY-2012','24-MAY-2012' from dual;
我如何獲得這樣的:
from to type1 type2
01-May-2010 02-Apr-2012 2000 0
03-Apr-2012 30-Apr-2012 2000 500
01-May-2012 07-May-2012 2421 500
08-May-2012 08-May-2012 2421 500
09-May-2012 22-May-2012 2935 500
23-May-2012 23-May-2012 2935 500
24-May-2012 15-Jul-2012 3114 500
16-Jul-2012 31-Dec-2012 3014 0
注:量在start_date上有效,並且在stop_date後一天不生效。
任何指針感激地收到!
你能外推多一點嗎?我不理解type1,type2是如何進入它的。 – Nick
我認爲type1,type2不是最棘手的位。 我作爲源數據什麼是一個開始和結束日期與金額表 有些開始/停止日期重疊 我需要的是能夠推斷出每即在類型總量每次職位開始或停止時都會產生效果。 把它想象成一條時間線。 從2010年5月1日到12年4月2日總計type1 = 2000,type2 = 0 這是因爲從10年5月1日開始有2個1型, 12作爲類型2開始,所以type1 = 2000,type2 = 0在前一天結束02-Apr-12 – lidbanger
我認爲這是我想要的僞代碼(現在忽略類型1,2的東西)'code' 情況下,當至少((following_rows.start_date-1),following_rows.end_date)current_row.start_date之間和current_row.stop_date然後至少((following_rows.start_date-1),following_rows.end_date) 別的 current_row.end_date 端 '代碼' 我無法獲得分區窗口,因爲我想要或區分當前ro w值和以下行。 – lidbanger