Oracle求救,使用的是PL/SQL

Harrison_2009 2010-08-23 11:04:57
现有一个表,其数据如下,同一个卡一天可以得到6笔以下有效数据:
ID 卡号 打卡时间
1 100000 20100801 08:00
1 100000 20100801 12:00
1 100000 20100801 13:00
1 100000 20100801 17:00
1 100000 20100801 17:20
1 100000 20100801 19:20
2 100020 20100801 08:00
2 100020 20100801 13:00
2 100020 20100801 17:00
要实现的是将以上的数据插入一个考勤日档表如:
卡号 打卡时间1 打卡时间2 打卡时间3 打卡时间4 打卡时间5 打卡时间6
100000 20100801 08:00 20100801 12:00 20100801 13:00 20100801 17:00 20100801 17:20 20100801 19:20
100020 20100801 08:00 20100801 13:00 20100801 17:00
应该如何写代码~




...全文
107 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
murton 2010-08-24
  • 打赏
  • 举报
回复
楼主为什么一定要这样存放数据呢?每次打卡记录一行数据不行吗?怎么会有这样的需求。每次打卡插入一行数据,就不会影响插入的效率。然后要像楼主所说的那样显示出来的话,方法是有很多的。
Phoenix_99 2010-08-24
  • 打赏
  • 举报
回复
insert  /*+ append */ into t2
select a.卡号
,max(case when rn=1 then a.打卡时间 end)
,max(case when rn2 then a.打卡时间 end)
,max(case when rn=3 then a.打卡时间 end)
,max(case when rn=4 then a.打卡时间 end)
,max(case when rn=5 then a.打卡时间 end)
,max(case when rn=6 then a.打卡时间 end)
from
(select t1.*,row_number() over(partition by 卡号 ordeer by 打卡时间) rn
from t1
)a
group by a.卡号

首先对t2表不要产生nolog
alter table t2 nologging
然后插入
2、也可以进行多进程插入。
kingkingzhu 2010-08-24
  • 打赏
  • 举报
回复
1楼的方法可以啦 就是在做行转列啊
一天6w数据也不大嘛 你可以在晚上业务部忙的时候做嘛
做完一天的就把该天的数据干掉
Harrison_2009 2010-08-24
  • 打赏
  • 举报
回复
1樓的方法是我現在在用的方法,不過數據量太大會卡死,每天刷卡的人至少有1W……
Harrison_2009 2010-08-24
  • 打赏
  • 举报
回复
日考勤分析。。現在還是用1樓那樣的方法,不過是先將查詢出來的數據放在一些變量裡了。然後循環插入~謝謝各位~
iqlife 2010-08-23
  • 打赏
  • 举报
回复
一定是6次么,如果是固定的时候就用max(decode())行转列,
如果是不定的话,参考
http://topic.csdn.net/u/20100109/13/6a10c168-f190-4766-b838-adbf03c4ac7b.html?73160
虫洞 2010-08-23
  • 打赏
  • 举报
回复
insert into t2
select a.卡号
,max(case when rn=1 then a.打卡时间 end)
,max(case when rn2 then a.打卡时间 end)
,max(case when rn=3 then a.打卡时间 end)
,max(case when rn=4 then a.打卡时间 end)
,max(case when rn=5 then a.打卡时间 end)
,max(case when rn=6 then a.打卡时间 end)
from
(select t1.*,row_number() over(partition by 卡号 ordeer by 打卡时间) rn
from t1
)a
group by a.卡号

17,086

社区成员

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

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