我有两个sql表。他们是为了一家公司的员工。一张桌子上有通常的详细信息(ID,姓名),另一张桌子上有他们的休假信息(empid *员工表中的id,datefrom,dateto中的外键)如何在sql中按月分解日期范围
我需要打破休假结构,可以显示日期。在一个输出中,我们将有: DateFrom DateT 18-01-2013 19-01-2013
现在如果员工已经离开了那个月(也就是从29到5) ,我会打印值,像这样: DateFrom DateT 29-01-2013 31-01-2013 2013年1月2日2013年5月2日
打印此,我用breaking up a date range by month 这有助于打破它下来,谢谢你的答案。 但我该如何显示哪个员工正在离开?正如我所说,这些表格是相互关联的。我尝试使用
select
e.Firstname,
e.Surname,
e.MobileNum,
convert(varchar(11),case when DateFrom > MonthStart then DateFrom else MonthStart end) as BeginDate,
convert(varchar(11),case when DateTo < MonthEnd then DateTo else MonthEnd end) as EndDate
from(
select l.*,
(
dateadd(month,datediff(month,0,l.datefrom)+v.number,0)
) as MonthStart,
DATEADD(day,-1,
dateadd(month,datediff(month,0,l.datefrom)+v.number+1,0)
) as MonthEnd
from EmployeeLeave l, Employees E
inner join master..spt_values v on v.type='P'
and v.number between 0 and DATEDIFF(month,l.datefrom,l.dateto)
) s
但我收到错误说,多部分标识符不能绑定。我找不到一个地方说
where l.empid = e.empid
所以有人请告诉我如何解决这个问题。想看到走的是员工离开过
做得非常好!非常感谢 – 2013-03-26 13:38:13