please disregard my prev post. try below solnDECLARE @Work table(EmployeeId int,WorkName varchar(20),ServiceDate int)DECLARE @Absent table(EmployeeId int,AbsenceType varchar(20),FromDate int,ToDate int)DECLARE @Startdate datetime,@enddate datetimeselect @Startdate='20081130',@enddate='20081205'INSERT INTO @Workselect 10,'Shuttle',20081201 union allselect 10,'Loop',20081202 union allselect 10,'North',20081203 union allselect 10,'Shuttle',20081204INSERT INTO @Absent--Absent.EmployeeId*****Absent.AbsenceType*****Absent.FromDate*****Absent.ToDateSELECT 100,'Sick',20081130,0 union allSELECT 110,'Vacation',20081204,20081210Select EmployeeId, WorkName as 'Work or Absence',cast(convert(varchar(20),[ServiceDate]) AS datetime)FROM @WorkWhere cast(convert(varchar(20),[ServiceDate]) AS datetime)>=@startDateand cast(convert(varchar(20),[ServiceDate]) AS datetime)<DATEADD(dd,1,@EndDate)UNIONSelect EmployeeId, AbsenceType as 'Work or Absence',DATEADD(dd,v.number,cast(convert(varchar(20),a.FromDate) AS datetime))From @Absent aCROSS JOIN master..spt_values vWhere v.type='p'AND cast(convert(varchar(20),a.FromDate) AS datetime) >= @StartDate AND DATEADD(dd,v.number,cast(convert(varchar(20),a.FromDate) AS datetime))<=CASE WHEN a.ToDate=0 OR @EndDate<cast(convert(varchar(20),a.ToDate) AS datetime) THEN @EndDate ELSE cast(convert(varchar(20),a.ToDate) AS datetime) ENDoutput------------------------------------------EmployeeId Work or Absence date10 Loop 2008-12-02 00:00:00.00010 North 2008-12-03 00:00:00.00010 Shuttle 2008-12-01 00:00:00.00010 Shuttle 2008-12-04 00:00:00.000100 Sick 2008-11-30 00:00:00.000100 Sick 2008-12-01 00:00:00.000100 Sick 2008-12-02 00:00:00.000100 Sick 2008-12-03 00:00:00.000100 Sick 2008-12-04 00:00:00.000100 Sick 2008-12-05 00:00:00.000110 Vacation 2008-12-04 00:00:00.000110 Vacation 2008-12-05 00:00:00.000