我公司一个考勤系统中有两个数据表,其中数据格式如下
表Gkjl:
 工号       年份 月份  序号      日 期                   周     C1        C2   说明:此行为字段名    
00000523  2007 6    28  2007-06-28 00:00:00.000  4   07:53:46  17:36:36
表Ghjk     
工号      工号                        日 期                      时间       说明:此行为字段名            
18 00000523 2007-06-28 00:00:00.000         07:53:46
18 00000523 2007-06-28 00:00:00.000   17:36:36  要将表Ghjk的数据写入到表Gkjl中,按以上规律及格式写入 其中 C1,C2为表Ghjk中6-28日期的两次打卡记录。

解决方案 »

  1.   

    表Ghjk      
    为什么有两个工号  
      

  2.   

    insert gkjl
    select 工号 ,datepart(yy,日 期),datepart(mm,日 期),datepart(d,日 期),日 期,datepart(dw,日 期),
           max(case when datepart(hh,时间)< 12  then 时间 else null end),
           max(case when datepart(hh,时间)>= 12  then 时间 else null end),
           说明
    from ghjk
    group by 工号 ,datepart(yy,日 期),datepart(mm,日 期),datepart(d,日 期),日 期,datepart(dw,日 期),说明
      

  3.   

    update a  set 
      C1=(select top 1 时间 from Ghjk where 工号=a.工号 and [日 期]=a.[日 期] order by 时间),
      C2=(select top 1 时间 from Ghjk where 工号=a.工号 and [日 期]=a.[日 期] order by 时间 desc)
    from Gkjl ainsert Gkjl
    select 工号,year([日 期]) as 年份,month([日 期]) as 月份,day([日 期]) as 序号,[日 期],
    ... as 周,              --周的计算方法需要说明
    min(时间) as C1,
    max(时间) as C2
    from Ghjk a
    where not exists (
      select 1 from Gkjl
      where 工号=a.工号 and [日 期]=a.[日 期]
      )
    group by 工号,[日 期]
      

  4.   

     各位不好意思,表达错误!
    如果表Ghjk 有 多行数据如何处理 例如有四行以上 
      其他字段不变就是时间不同!那该如何处理啊!