select 姓名,标准出勤时间,2005.01.01,2005.01.02 ,····2005.01.31,(31*标准出勤时间-2005.01.01-2005.01.02-.....-2005.01.31) as 迟到的天数 from 考勤表
wangdehao(找找找) 你计算的是时间吧? 我想要的是次数
Select *, SUM((Case When 标准出勤时间>[2005.01.01] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.02] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.03] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.04] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.05] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.06] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.07] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.08] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.09] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.10] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.11] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.12] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.13] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.14] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.15] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.16] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.17] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.18] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.19] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.20] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.21] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.22] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.23] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.24] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.25] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.26] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.27] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.28] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.29] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.30] Then 1 Else 0 End) +(Case When 标准出勤时间>[2005.01.31] Then 1 Else 0 End)) from 考勤表
你计算的是时间吧?
我想要的是次数
Select
*,
SUM((Case When 标准出勤时间>[2005.01.01] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.02] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.03] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.04] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.05] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.06] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.07] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.08] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.09] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.10] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.11] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.12] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.13] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.14] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.15] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.16] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.17] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.18] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.19] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.20] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.21] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.22] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.23] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.24] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.25] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.26] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.27] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.28] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.29] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.30] Then 1 Else 0 End)
+(Case When 标准出勤时间>[2005.01.31] Then 1 Else 0 End))
from 考勤表
(
[姓名] varchar(20),
[标准出勤时间] varchar(10),
[2005.01.01] varchar(20) default '7.4',
[2005.01.02] varchar(20) default '7.4',
[2005.01.03] varchar(20) default '7.4',
[2005.01.04] varchar(20) default '7.4',
[2005.01.05] varchar(20) default '7.4',
[2005.01.06] varchar(20) default '7.4',
[2005.01.07] varchar(20) default '7.4',
[2005.01.08] varchar(20) default '7.4',
[2005.01.09] varchar(20) default '7.4',
[2005.01.10] varchar(20) default '7.4',
[2005.01.11] varchar(20) default '7.4',
[2005.01.12] varchar(20) default '7.4',
[2005.01.13] varchar(20) default '7.4',
[2005.01.14] varchar(20) default '7.4',
[2005.01.15] varchar(20) default '7.4',
[2005.01.16] varchar(20) default '7.4',
[2005.01.17] varchar(20) default '7.4',
[2005.01.18] varchar(20) default '7.4',
[2005.01.19] varchar(20) default '7.4',
[2005.01.20] varchar(20) default '7.4',
[2005.01.21] varchar(20) default '7.4',
[2005.01.22] varchar(20) default '7.4',
[2005.01.23] varchar(20) default '7.4',
[2005.01.24] varchar(20) default '7.4',
[2005.01.25] varchar(20) default '7.4',
[2005.01.26] varchar(20) default '7.4',
[2005.01.27] varchar(20) default '7.4',
[2005.01.28] varchar(20) default '7.4',
[2005.01.29] varchar(20) default '7.4',
[2005.01.30] varchar(20) default '7.4'
)insert tb([姓名],[标准出勤时间],[2005.01.01],[2005.01.02],[2005.01.30])
select '张三','8.00','7.50','7.40','8.10' union
select '立四','18.00','17.50','18.10','18.0'select * from tbdeclare @sql nvarchar(4000)
declare @tmp nvarchar(4000)
set @tmp=''
select @tmp=@tmp+N'(case when [标准出勤时间]>['+name+N'] then 0 else 1 end)+' from syscolumns where id=object_id('tb') and name like '200%'
set @sql=N'select [姓名] ,sum('+stuff(@tmp,len(@tmp),1,'')+N') [次数] from tb group by [姓名]'
--print (@sql)
exec(@sql)drop table tb
/*
姓名 次数
-------------------- -----------
立四 28
张三 1*/