我想在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
谢谢你
答案 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()
来做到这一点。