我有两个 sql 表。它们适用于公司的员工。一个表有通常的详细信息(id、name、surname),另一个表有他们的休假信息(empid *外键到员工表中的 id、datefrom、dateto)
我需要分解休假结构,以便我们可以显示日期。在输出中,我们将有: DateFrom DateT 18-01-2013 19-01-2013
现在,如果员工休假超过一个月(即从 29 到 5),我将打印如下值: DateFrom DateT 29-01-2013 31-01-2013 01-02-2013 05-02-2013
为了打印这个,我按月分解了一个日期范围, 这有助于分解它,谢谢你的回答。但是我如何显示哪个员工得到了所有的假期?正如我所说,这些表是链接的。我尝试使用
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
所以有人可以告诉我如何解决这个问题。希望看到正在休假的员工