我有兩個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