定义一个用户自定义函数吧.
形参是有32个.
 标准出勤时间    2005.01.01   2005.01.02 ····2005.01.31呵呵,是不是参数好像很多哦, 不过,你放在select语句里面的话,就更麻烦.

解决方案 »

  1.   

    select 姓名,标准出勤时间,2005.01.01,2005.01.02 ,····2005.01.31,(31*标准出勤时间-2005.01.01-2005.01.02-.....-2005.01.31) as 迟到的天数 from 考勤表
      

  2.   

    wangdehao(找找找) 
    你计算的是时间吧?
    我想要的是次数
      

  3.   


    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 考勤表
      

  4.   

    create table tb
    (
     [姓名] 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*/