我正在尝试编写一个查询,将数据从一个表复制到PL / SQL中的另一个表,我需要帮助,谢谢。
源表有单个字段,目标有3个字段。 源表中的数据从05,10,30和99开始,如下所示
05-1
10-1
30-1
10-2
30-2
30-2
30-2
30-2
10-3
30-3
99-1
05-2
10-4
30-4
需要将数据复制到另一个包含3列的表中,如下所示
A B C
05-1 10-1 30-1
05-1 10-2 30-2
05-1 10-2 30-2
05-1 10-2 30-2
05-1 10-2 30-2
05-1 10-3 30-3
05-2 10-4 30-4
答案 0 :(得分:0)
您的问题尚不清楚,但根据您提供的输入和输出的猜测,我假设生成输出的规则与下面的内容相似。
1)当它以99开始时忽略它
2)当它以05 set变量开始并移至下一行时。
3)当它以10个设定变量开始并移至下一行时。
4)当它以30个插入表格开始时,使用您在前两个步骤中设置的变量。
如果上述规则正确,则以下规则应有效。当然,您需要替换您的表/字段名称。如果我从所提供的数据中误解了你的要求(很可能因为它不是很清楚),这至少应该为你提供一个起点。
declare
cursor c_loops is
select column1 from table1;
v_col1 varchar2(10) default null;
v_col2 varchar2(10) default null;
v_col3 varcahr2(10) default null;
begin
for v_row in c_loops loop
case (substr(v_row.column1, 0, 2)
when '99' then
-- do nothing ignore row
null;
when '05' then
v_col1 := v_row.column1;
when '10' then
v_col2 := v_row.column1;
when '30' then
v_col3 := v_row.column1;
insert into table2 (col1, col2, col3) values (v_col1, v_col2, v_col3);
else
-- output some error here because you have unexpected input
null;
end case;
end loop;
end;