我公司一个考勤系统中有两个数据表,其中数据格式如下
表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日期的两次打卡记录。
表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日期的两次打卡记录。
为什么有两个工号
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,日 期),说明
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 工号,[日 期]
如果表Ghjk 有 多行数据如何处理 例如有四行以上
其他字段不变就是时间不同!那该如何处理啊!