将2个日期拆分为2行isq

时间:2017-09-18 16:17:32

标签: sql sql-server

我想在sql中将2个月之间的假期分成2行,例如:

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

我需要将它分成两行,如下所示:

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

谢谢你

1 个答案:

答案 0 :(得分: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()来做到这一点。