有一个表有id,姓名,日期,和上班时间。上班时间由星期一到星期六,星期六算加班,星期一到星期五的上班时间去最小的值跟星期六上班时间对调!
例如:
tid tname tdate thour
1 allen 2009-3-2 3.5
2 allen 2009-3-3 5
3 allen 2009-3-4 7
4 allen 2009-3-5 8
5 allen 2009-3-6 4
6 allen 2009-3-7 6
7 bill 2009-3-2 5
8 bill 2009-3-3 6
9 bill 2009-3-4 3
10 bill 2009-3-5 8
11 bill 2009-3-6 8
12 bill 2009-3-7 6
根据上表,名字为allen的要把星期一(2009-3-2)和星期六(2009-3-7)对调,星期一的上班时间为6小时,星期六的上班时间为3.5小时;
名字为bill的要把星期三(2009-3-4)和星期六(2009-3-7)对调,星期一的上班时间为6小时,星期六的上班时间为3.5小时;
需要计算一个月的数据
------最佳解决方案--------------------
if object_id('tb') is not null drop table tb
go
create table tb(tid int, tname varchar(10), tdate datetime, thour decimal(18,1))
insert into tb values(1 , 'allen' , '2009-3-2' , 3.5)
insert into tb values(2 , 'allen' , '2009-3-3' , 5 )
insert into tb values(3 , 'allen' , '2009-3-4' , 7 )
insert into tb values(4 , 'allen' , '2009-3-5' , 8 )
insert into tb values(5 , 'allen' , '2009-3-6' , 4 )
insert into tb values(6 , 'allen' , '2009-3-7' , 6 )
insert into tb values(13 , 'allen' , '2009-3-9' , 3.5)
insert into tb values(14 , 'allen' , '2009-3-10', 3.5 )
insert into tb values(15 , 'allen' , '2009-3-11' , 7 )
insert into tb values(16 , 'allen' , '2009-3-12' , 8 )
insert into tb values(17, 'allen' , '2009-3-13' , 4 )
insert into tb values(18, 'allen' , '2009-3-14' , 6 )
insert into tb values(19 , 'allen' , '2008-12-1' , 3.5)
insert into tb values(20 , 'allen' , '2008-12-2', 3.5 )
insert into tb values(21 , 'allen' , '2008-12-3' , 7 )
insert into tb values(22 , 'allen' , '2008-12-4' , 8 )
insert into tb values(23, 'allen' , '2008-12-5' , 4 )
insert into tb values(24, 'allen' , '2008-12-6' , 6 )
insert into tb values(7, 'bill' , '2009-3-2' , 5 )