一张表A结构如下:
number addr city
2100001 北京 北京
2100002 北京 北京
2100003 河北 石家庄
2100004 河北 石家庄
2100005 河北 石家庄
2100017 河北 唐山
2100018 湖南 长沙
2100019 河北 唐山
2100020 河北 唐山
2100021 河北 唐山
. . .
. . .
. . .
. . .
现在要把A表的数据插到B表如下:
begin end provi city
2100001 2100002 北京 北京
2100003 2100005 河北 石家庄
2100017 2100017 河北 唐山
2100018 2100018 湖南 长沙
2100019 2100021 河北 唐山
. . . .
. . . . 我的积分不多,没有多少给大虾。。就当高手练练手呀!!!
number addr city
2100001 北京 北京
2100002 北京 北京
2100003 河北 石家庄
2100004 河北 石家庄
2100005 河北 石家庄
2100017 河北 唐山
2100018 湖南 长沙
2100019 河北 唐山
2100020 河北 唐山
2100021 河北 唐山
. . .
. . .
. . .
. . .
现在要把A表的数据插到B表如下:
begin end provi city
2100001 2100002 北京 北京
2100003 2100005 河北 石家庄
2100017 2100017 河北 唐山
2100018 2100018 湖南 长沙
2100019 2100021 河北 唐山
. . . .
. . . . 我的积分不多,没有多少给大虾。。就当高手练练手呀!!!
begin end provi city
2100001 2100002 北京 北京
2100003 2100005 河北 石家庄
2100017 2100021 河北 唐山
2100018 2100018 湖南 长沙
以下代码可以实现楼主需求:SELECT MIN(number) begin, MAX(number) end, addr provi, city
FROM
(
select
number,
addr,
city,
SUM(IsFirst) OVER (ORDER BY number) RANK_INDEX --累加,得出分组
from
( --按照number的顺序,判断本行与上一行是否相同,从而得出首行标识
SELECT
number,
addr,
city,
DECODE(addr||'-'||city, LAG(addr||'-'||city, 1, 0) OVER (ORDER BY number), 0, 1) IsFirst
FROM a
)
)
GROUP BY RANK_INDEX, addr, city
SQL> select * from table1; NUM ADDR CITY
---------- ---------- ----------
2100001 北京 北京
2100002 北京 北京
2100003 河北 石家庄
2100004 河北 石家庄
2100005 河北 石家庄
2100017 河北 唐山
2100018 湖南 长沙
2100019 河北 唐山
2100020 河北 唐山
2100021 河北 唐山已选择10行。select min(num) begin,max(num) end,addr,city from(
select num,addr,city,rn, rn-rank() over (partition by addr,city order by rn) rn1
from ( select num,addr,city,rownum rn from table1)
)group by addr,city,rn1; BEGIN END ADDR CITY
---------- ---------- ---------- ----------
2100001 2100002 北京 北京
2100017 2100017 河北 唐山
2100019 2100021 河北 唐山
2100003 2100005 河北 石家庄
2100018 2100018 湖南 长沙
select num,addr,city,rn, rn-rank() over (partition by addr,city order by rn) rn1
from ( select num,addr,city,rownum rn from table1)
)group by addr,city,rn1 order by max(rn);
BEGIN END ADDR CITY
---------- ---------- ---------- ----------
2100001 2100002 北京 北京
2100003 2100005 河北 石家庄
2100017 2100017 河北 唐山
2100018 2100018 湖南 长沙
2100019 2100021 河北 唐山
只是放到过程里面的话,在编译时通过了,可在测试时却不执行不知为什么。。
注:我新来的,怎么才能给回到问题者加分???? 急!!!!
你反映说在存储过程中不能执行,因为你没有贴出代码,我只能猜测了。
存储过程不能执行select查询语句(“select 字段 into 变量 from 表名” 是可以的),你改成insert into b select ……。