我们的系统就是,一个表存放有卡钟文件得到的原始打卡记录,然后通过选择日期进行原始数据与打卡记录的合并,然后得到员工某天总的出勤,迟到,早退等情况,用一个TABLE来存储,一天对应一条记录!!!
对于你的日报表,我觉得可以做个截面,通过选择合并日期来进行处理!不过女孩子不要鼓捣这些了,挺无聊的嘿嘿

解决方案 »

  1.   

    可用函数
    如调用时Fun_Total(c.badge,c.term)
    函数如下:
    create function funtotal(@id varchar(10),@CurrTerm datetime) int
    returns
    as
    begin
    select @total=count(*) from c where badge=@badge and datediff(day,term,@CurrTerm )=0
    set funtotal=@total
    return 
    end
      

  2.   

    a表是员工信息,b表是刷卡纪录(纪录时间和卡号id)c表是日报表
    create trigger tu_b_au
    on b
    for insert
    as
    begin
    declare @cardno varchar(n),--卡号
            @now    char(10),
            @fee    decimal(18,4)
    select @cardno=卡号,
           @fee=消费金额
        from inserted
    select @now=convert(char(10),getdate(),120)
    --判断此前有没有刷卡
    if not exists(select * from b where 卡号=@cardno and convert(char(10),刷卡时间,120)=@now)
       --如没有则新插入记录
       insert into c
        卡号,等记录。
    else
       --否则,修改记录
       update c set 消费金额=消费金额+@fee,
                    刷卡次数=刷卡次数+1
    end
    大意如此。