写个SQL语句纠结了很久

powder111 2011-03-28 10:23:31
tab_1 tab_2
编号 时间间隔 启用时间 标准时段 编号 打卡时间
201 3 2011-01-01 0830 201 2011-01-01 08:45:00
202 2 2011-01-01 0930 201 2011-01-02 08:45:00
203 1 2011-01-01 1830 202 2011-01-02 08:45:00
203 2011-01-02 18:25:00
203 2011-01-03 18:25:00
202 2011-01-04 09:45:00

我想查询 一月份 的打开记录 比如在标准时间前后10分钟内都是正常
出来的数据应该是
201 2011-01-01 正常
201 2011-01-04 迟到
201 2011-01-07 迟到
202 2011-01-02 迟到
202 2011-01-04 正常
203 2011-01-03 正常
203 2011-01-02 正常

求救?请高手指教!!!

...全文
236 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixinbill 2011-03-31
  • 打赏
  • 举报
回复
提问时候最 把建表语句 插数据语句都发上来 。。。。。。。。。。。。。
iefus 2011-03-30
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 dajun539 的回复:]
SQL code
select 编号,启用时间,case when (打卡时间 - 启用时间) * 60 > 10 then '迟到'
else '正常' from tab_1
[/Quote]

应该是这样把
oracle_dba_11 2011-03-29
  • 打赏
  • 举报
回复
select 编号,启用时间,case when (打卡时间 - 启用时间) * 60 > 10 then '迟到'
else '正常' from tab_1
li1229363 2011-03-29
  • 打赏
  • 举报
回复
加班?

如果实在是不方便,还是使用程序来判断吧。现在人们都懒啦,都希望数据库把所有的功能都做到啦~

那要程序干嘛呢?
vber1010 2011-03-29
  • 打赏
  • 举报
回复
按你提供的数据201 1、2号都是迟到的。而且201也没有在4、7号打卡记录。
yejihui9527 2011-03-29
  • 打赏
  • 举报
回复
tab_1 tab_2
编号 时间间隔 启用时间 标准时段 编号 打卡时间
201 3 2011-01-01 0830 201 2011-01-01 08:45:00
202 2 2011-01-01 0930 201 2011-01-02 08:45:00
203 1 2011-01-01 1830 202 2011-01-02 08:45:00
203 2011-01-02 18:25:00
203 2011-01-03 18:25:00
202 2011-01-04 09:45:00
两个表,看不出,有点晕
huangdh12 2011-03-29
  • 打赏
  • 举报
回复
中间还写了一个统计加班时间的函数
huangdh12 2011-03-29
  • 打赏
  • 举报
回复
我最近就有玩了玩考勤统计表。。统计加班时间的
有这些情况 1. 一天只打一次卡。
2. 一天打了好几次卡
3. 原本工作日,但是放假的。
4. 原本节假日 ,但是有打卡记录的。
处理步骤是。 1.把一天中重复的记录删除
2. 把把一天中打了好几次卡的 除了头尾的数据删除。
然后就借助视图进行查询。
zhangji2411 2011-03-29
  • 打赏
  • 举报
回复
楼主把你的表的格式写明白啊,你那个跟本看不懂什么意思
powder111 2011-03-29
  • 打赏
  • 举报
回复
-- Create table
create table TAB_对照表
(
编号 VARCHAR2(12) not null,
时间间隔 NUMBER,
启用时间 DATE,
标准时段 VARCHAR2(12)
)
tablespace XDB
pctfree 10
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
alter table TAB_对照表
add constraint PK_1 primary key (编号)
using index
tablespace SYSTEM
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);





-- Create table
create table TAB_记录表
(
编号 VARCHAR2(12) not null,
打开时间 DATE not null
)
tablespace SYSTEM
pctfree 10
pctused 40
initrans 1
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
alter table TAB_记录表
add constraint PK_12 primary key (编号, 打开时间)
using index
tablespace SYSTEM
pctfree 10
initrans 2
maxtrans 255
storage
(
initial 64K
minextents 1
maxextents unlimited
);
archwuke1 2011-03-29
  • 打赏
  • 举报
回复
看不懂啊,为什么同一条记录有两个编号
ckc 2011-03-29
  • 打赏
  • 举报
回复
不要追求单一sql解决问题
复杂点的问题写个存储过程什么的来处理
getmydream 2011-03-29
  • 打赏
  • 举报
回复
嗯,前后的记录怎么格式不一致?

17,089

社区成员

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

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