小弟有一句SQL不知怎么写 求助..

腼腆的小军君 2018-01-07 09:46:33
大概有这么一张考勤表
id
eid 员工ID
name 员工姓名
date 考勤日期
time 考勤时间
type 考勤类型 0为上班 1为下班

现在要能够查询某一周的考勤情况并在前端形成表格如下...不知道该怎么办..



...全文
819 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wandier 2018-01-09
  • 打赏
  • 举报
回复
引用 2 楼 卖水果的net的回复:
典型的行转列,百度上的例子很多的。
上下班应该是两条记录,是行转列?
DamonYo0o 2018-01-08
  • 打赏
  • 举报
回复
SELECT * FROM (SELECT * FROM Agent_State AS b WHERE NOT EXISTS(SELECT 1 FROM Agent_State WHERE AgentID= b.AgentID AND b.ActionTime<ActionTime)) t 修改一下试试
卖水果的net 2018-01-08
  • 打赏
  • 举报
回复
典型的行转列,百度上的例子很多的。
碧水幽幽泉 2018-01-07
  • 打赏
  • 举报
回复
考勤日期字段名称不可能为date,考勤时间字段名称也不可能为time,你的描述有问题。 你自己创建下表就明白了。 我这里假设: 考勤日期为dt,它为date类型 考勤时间为dtime,它为varchar2类型。

select name as "员工姓名",
       decode(type,'0','上班','1','下班') as "考勤类型",
	   max(decode(to_char(dt,'d'),'2',dtime,null)) as "周一",
	   max(decode(to_char(dt,'d'),'3',dtime,null)) as "周二",
       max(decode(to_char(dt,'d'),'4',dtime,null)) as "周三",
       max(decode(to_char(dt,'d'),'5',dtime,null)) as "周四",
       max(decode(to_char(dt,'d'),'6',dtime,null)) as "周五"
  from 考勤表
 where dt >= 某一周周一
   and dt <= 某一周周五
group name,decode(type,'0','上班','1','下班')   
   

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧