|
jen
Master Smack Fu Yak Hacker
4110 Posts |
Posted - 2007-03-09 : 05:45:14
|
| [code]create table #src(taskid int,date1 datetime,hrs float,date2 datetime,hrs2 float,date3 datetime,hrs3 float,emp varchar(3))declare @t table(datecol varchar(10))declare @col varchar(10)create table #pivot(emp varchar(3),taskid int)insert into #srcselect 1, '3/3/2007', 8.0, '3/4/2007', 8.5, '3/5/2007', 8.0 ,'AAA'unionselect 2, '3/3/2007', 8.0, '3/4/2007', 8.5, '3/5/2007', 8.0, 'BBB'insert into @t(datecol)select convert(varchar(12),date1,101)from #srcgroup by date1unionselect convert(varchar(12),date2,101)from #srcgroup by date2unionselect convert(varchar(12),date3,101)from #srcgroup by date3declare @cmd nvarchar(4000)select @cmd=coalesce((@cmd + ','),'') + ('[' + datecol + '] [float]') from @torder by datecol ascset @cmd='alter table #pivot add ' + @cmdexec sp_executesql @cmdwhile exists (select * from @t)begin set @col=(select top 1 datecol from @t order by datecol asc) set @cmd='insert into #pivot(emp,taskid,[' + @col + ']) select emp,taskid,hrs from #src where datediff(day,date1,''' + @col + ''')=0 ' exec sp_executesql @cmd set @cmd='update #pivot set [' + @col + ']=hrs2 from #pivot p join #src s on p.emp=s.emp and p.taskid=s.taskid where datediff(day,date2,''' + @col + ''')=0 ' exec sp_executesql @cmd set @cmd='update #pivot set [' + @col + ']=hrs3 from #pivot p join #src s on p.emp=s.emp and p.taskid=s.taskid where datediff(day,date3,''' + @col + ''')=0 ' exec sp_executesql @cmd delete from @t where datecol=@colendselect * from #pivotdrop table #pivotdrop table #src[/code]--------------------keeping it simple... |
 |
|