当前位置:编程学习 > C#/ASP.NET >>

考勤SQL语句请求支援

说明:将学生分组(跨班分,或在一个班里划分),某学生一天可能不止一门课,排课制定时间范围,同时制定教室
表结构如下:
1.考勤规则表(分为单位)
迟到时间范围(即多少分算吃到),早退时间范围,刷卡前后有效范围
2.排课表
ID,学生组ID,日期,考勤时间,教室
格式如:1,1,20110101,8:00-12:00   A101
        2,1,20110101,13:00-17:00  A102
3.刷卡记录表
ID,学号,日期,刷卡时间,标记
格式如:1,2011,20110101,8:00,1(上课)
        2,2011,20110101,11:30,0(下课)
        3,2011,20110101,13:00,1(上课)
        4,2011,20110101,16:30,0(下课)
现在想实现的效果是:
1.查看学生的刷卡明细,刷卡时间逗号隔开
格式如:学号   日期       刷卡时间
即:2011     20110101     8:00,11:30,13:00,16:30(刷卡时间逗号隔开)
2.日报表(组里未刷卡的学生的信息也要体现出来)
格式如:学号    日期   上课1时间   结果(迟到,早退或未刷卡) 下课1时间   结果    上课2时间 结果   下课2  结果。。。。。。缺勤次数(一天该刷卡没刷卡的次数/2)
3.月报表
格式如:学号,迟到次数,早退次数,缺勤次数
      --------------------编程问答-------------------- 这差不多跟行列转换类似,楼主可参考下
http://blog.csdn.net/huwei2003/archive/2010/11/03/5984747.aspx --------------------编程问答--------------------

if object_id('考勤规则表') is not null 
drop table 考勤规则表
create table 考勤规则表(迟到时间范围 int,早退时间范围 int,刷卡前后有效范围 int)
delete from 考勤规则表
insert into 考勤规则表(迟到时间范围,早退时间范围,刷卡前后有效范围) select 5,5,10


if object_id('排课表') is not null
drop table 排课表
create table 排课表(ID int,学生组ID int,日期 varchar(50),考勤时间 varchar(50),教室 varchar(50))
delete from 排课表
insert into 排课表(ID,学生组ID,日期,考勤时间,教室) 
               select 1,1,'20110101','8:00-12:00', 'A101' union all
               select 2,1,'20110101','13:00-17:00','A102' 


if object_id('刷卡记录表') is not null
drop table 刷卡记录表
create table 刷卡记录表(ID int,学号 varchar(50),日期 varchar(50),刷卡时间 varchar(50),标记 bit)
delete from 刷卡记录表
insert into 刷卡记录表(ID,学号,日期,刷卡时间,标记) 
    select 1,'2011','20110101','8:00',1 union all
select 2,'2011','20110101','11:30',0 union all
select 3,'2011','20110101','13:00',1 union all
select 4,'2011','20110101','16:30',0
--这里你还少一张学生分组表


--查看学生的刷卡明细,刷卡时间逗号隔开
select 学号,日期,stuff((select ','+刷卡时间 from 刷卡记录表 where 学号=t.学号 and 日期=t.日期 for xml path('')),1,1,'') as 刷卡时间
from 刷卡记录表 t group by 学号,日期


--结果
--学号      --日期          --刷卡时间
2011 20110101 8:00,11:30,13:00,16:30
--------------------编程问答--------------------  数据库设计有问题....  --------------------编程问答-------------------- 谢谢楼上的两位朋友,辛苦小宋了,表结构我没给完整,呵呵。
我要实现3个功能啊,另外两个,能否也请你给指引下
另外,SQL语句还是博大精深的,你写的那段代码就从来没见过,哪里有详细教程??或者是不是还有通俗的方法可解决呢。
十分感谢CSDN的热心朋友 --------------------编程问答-------------------- 请大家继续帮忙,帮忙者新年行大运 --------------------编程问答-------------------- 不给分没动力啊,还有,给出完整的表结构,和测试数据,以及需求 --------------------编程问答-------------------- 没有必要整怎么复杂  表与表之间是有关键字进行关联的 你用LEFT JOIN 进行连接  然后用DataGridView 显示   最后再用水晶报表导出 --------------------编程问答-------------------- 我按套路写看看吧,写存储过程还是在VS里面写,还是有区别的
补充:.NET技术 ,  C#
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,