2つのSQLテーブルがあります。会社の従業員向けです。1つのテーブルには通常の詳細(id、name、surname)があり、別のテーブルにはそれらの休暇情報(empid *従業員テーブルのidへの外部キー、datefrom、dateto)があります
日付を表示できるように、休暇の構造を分解する必要がありました。出力には、次のようになります。DateFrom DateT 18-01-2013 19-01-2013
これで、従業員が1か月を超える休暇を取得した場合(つまり、29から5になります)、次のように値を出力します。DateFrom DateT 29-01-2013 31-01-2013 01-02-2013 2013年5月2日
これを印刷するために、私は月ごとに日付範囲を分割することを使用しました 。これは、その回答に感謝します。しかし、どの従業員がすべての休暇を取得しているのかを表示するにはどうすればよいですか?私が言ったように、テーブルはリンクされています。使ってみました
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
誰かがこれを修正する方法を教えてもらえますか?休暇を取っている従業員に会いたい