Oracle 往新表插入数据

qiaobianhongye 2017-07-02 10:48:47
原来申请表中主要有雇员id,申请开始时间,申请结束时间等字段。现在要创建一张表create table TMP20170702_TEST_01
(
empid VARCHAR2(100),
time DATE
),把申请表中雇员每天的申请时间插入到 TMP20170702_TEST_01中,time表示的意思是雇员申请的具体时间,例如ID为21335227雇员,那么插入到TMP20170702_TEST_01表中的数据为3条,①21335227 2017-05-31,②21335227 2017-06-01,③21335227 2017-06-02。请问这个语句应该怎么写?新手菜鸟,请各位不吝赐教。谢谢
...全文
204 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
imcmuc 2017-07-03
  • 打赏
  • 举报
回复
CREATE OR REPLACE PROCEDURE TEST
AS
I NUMBER(3);
BEGIN
 FOR ROWDATA IN (select emp_id,END_DATE - BEGIN_DATE DAYNUM,BEGIN_DATE  FROM T)LOOP
   I:=0;
   LOOP
     INSERT INTO T_NEW VALUES(ROWDATA.EMP_ID,ROWDATA.BEGIN_DATE+I);
     I:=I+1;
     EXIT WHEN I>ROWDATA.DAYNUM;
    END LOOP;
  END LOOP;
  COMMIT;
 END;
卖水果的net 2017-07-02
  • 打赏
  • 举报
回复
先试试这个,有问题再at 我。 select emp_id,begin_date + rownum from t connect by rownum <= end _date - begin_date +1 and prior emp_id = emp_id and prior dbms_random.value is not null
qiaobianhongye 2017-07-02
  • 打赏
  • 举报
回复
多人多条记录的情况,该如何修改这条语句?
qiaobianhongye 2017-07-02
  • 打赏
  • 举报
回复
[quote=引用 2 楼 u012280886 的回复:]
如果每个id只有一个记录的情况下没有问题,但是如果一个ID有多条记录的情况下就不行了,比如t表一个id有两条数据
查出来的结果是
这种情况下该如何修改?
卖水果的net 2017-07-02
  • 打赏
  • 举报
回复

-- 这个过滤条件,要用 start with 语句,不要写在 where 中
SQL>
SQL> create table t(emp_id varchar(10), begin_date date, end_date date);
Table created
SQL> begin
2 insert into t values(21021339, date'2017-05-31', date'2017-06-01');
3 insert into t values(21021227, date'2017-05-31', date'2017-06-04');
4 insert into t values(21021110, date'2017-05-31', date'2017-06-05');
5 end;
6 /
PL/SQL procedure successfully completed
SQL> select emp_id,begin_date + rownum -1
2 from t
3 start with emp_id ='21021227'
4 connect by rownum <= end_date - begin_date +1
5 and prior emp_id = emp_id
6 and prior dbms_random.value is not null;
EMP_ID BEGIN_DATE+ROWNUM-1
---------- -------------------
21021227 2017/5/31
21021227 2017/6/1
21021227 2017/6/2
21021227 2017/6/3
21021227 2017/6/4
SQL> drop table t purge;
Table dropped

SQL>
qiaobianhongye 2017-07-02
  • 打赏
  • 举报
回复



[quote=引用 楼主 u012280886 的回复:]

不行哦,查到的不是我想要的数据

17,082

社区成员

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

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