2017-09-18 68 views
1

我想在SQL2個月之間的分裂假期成2排,例如:拆分2日期爲2排ISQ

EmpId  StartDate  EndDate  TotalDays 
1   2017/5/25  2017/6/10  16 

我需要把它拆分成2行類似如下:

EmpId  StartDate  EndDate  TotalDays 
1   2017/5/25  2017/5/31  6 
1   2017/6/1  2017/6/10  10 

感謝您

+0

「update row where ..」和「insert ..」在一起可能是? (只是一個工作) –

回答

1

假設假期只有有一個月的分裂(如你的例子):

select empid, startdate, 
     (case when eomonth(startdate) < enddate then eomonth(startdate) else enddate end) as enddate 
from t 
union all 
select empid, dateadd(day, 1, eomonth(startdate)), enddate 
from t 
where eomonth(startdate) < enddate; 

那麼,這不會給TotalDays,但你可以使用子查詢和datediff()

+0

謝謝你的回答,我更新我的例子 –

+0

我使用聲明如下 select id,name,Datestart,DateEnd, (case eomonth(Datestart)

+0

@AymanQadah。 。 。在你的問題中沒有'name',在我的答案中沒有。 –