一个记录表中有工号,日期时间,每天3个时段都有记录。怎样用sql语句按照一段时间,不同时间段把记录合并
2011-6-30 7:16 急诊护理站 朱晓琴 415780002 消费_1_4_M13721
2011-6-30 11:37 急诊护理站 朱晓琴 415780002 消费_1_4_M13721
2011-6-30 19:04 急诊护理站 朱晓琴 415780002 消费读卡器_3_15_S13567
2011-7-1 8:21 急诊护理站 朱晓琴 415780002 消费_1_4_M13721
2011-7-1 11:21 急诊护理站 朱晓琴 415780002 消费_1_4_M13721
2011-7-1 20:21 急诊护理站 朱晓琴 415780002 消费_1_4_M13721
2011-6-30 7:16 急诊护理站 小雨 415780002 消费_1_4_M13721
2011-6-30 11:37 急诊护理站 小雨 415780002 消费_1_4_M13721
2011-6-30 19:04 急诊护理站 小雨 415780002 消费读卡器_3_15_S13567
2011-7-1 8:21 急诊护理站 小雨 415780002 消费_1_4_M13721
2011-7-1 11:21 急诊护理站 小雨 415780002 消费_1_4_M13721
2011-7-1 20:21 急诊护理站 小雨 415780002 消费_1_4_M13721
数据
部门 工号 姓名 卡号 餐别 餐次 费用
急诊护理站 11 朱晓琴 415780002 早餐 1 1
急诊护理站 11 朱晓琴 415780002 中餐 1 2
急诊护理站 11 朱晓琴 415780002 晚餐 1 2
急诊护理站 22 小雨 415780001 早餐 1 1
急诊护理站 22 小雨 415780001 中餐 1 2
2 2 2 2 2 2 2
做成的结果
用餐记录查询也是我们马上要做的系统,根据刷卡记录以及每餐定义的时间范围,
计算出每个员工每餐的次数。
早餐:6:00-10:29
中餐:10:30-14:59
晚餐:15:00-20:59
夜宵:21:00-次日1:30 展开
假设你的原表叫eat,我新建一张表叫eat_pay,字段是 (用餐时段 姓名 用餐次数)
create table eat_pay as
select '06:00-10:29' as 早餐时间,t.name as 员工姓名,count(name) as 用餐次数 from eat t
where to_char(time,'HH24:MI')>'06:00' and to_char(time,'HH24:MI') <'10:29'
group by name
insert into eat_pay
select '10:30-14:59' as 中餐时间,t.name as 员工姓名,count(name) as 用餐次数 from eat t where to_char(time,'HH24:MI')>'10:30' and to_char(time,'HH24:MI') <'14:59' group by name
insert into eat_pay
select '15:00-20:59' as 晚餐时间,t.name as 员工姓名,count(name) as 用餐次数 from eat t where to_char(time,'HH24:MI')>'15:00' and to_char(time,'HH24:MI') <'20:59' group by name
insert into eat_pay
select '21:00-23:29' as 宵夜时间,t.name as 员工姓名,count(name) as 用餐次数 from eat t
where to_char(time,'HH24:MI')>'21:00' and to_char(time,'HH24:MI') <'23:29' group by name
最后select * from eat_pay 可以看到你要的结果