请教大家个SQL问题如何通过表A复制到表B去
表A year sal
2000 10
2001 20
2002 30
2003 40
表B 的显示结果
year sal
2000 10
2001 30
2002 60
2003 100
表B的SAL是前几年之和
[code="sql"]
create table java_eye_b as select year,sum(sal)over(order by year)"sal" from java_eye_a
[/code]
办法很多.
第一,可以写存储过程,也可以写触发器;
写存储过程只能保证当前的B表数据与A表数据存在这样的关系,写触发器能保存,A表数据变动,B表也跟着对应.
第二,可以写个小程序来实现.
select year, sal=(select sum(sal) from 表a as t1 where t1.year<=t2.year)
from 表A as t2
begin
declare i int;
declare _date_year varchar(10);
declare _sales int;
declare _sum_sales int;
#游标
declare fetchCursor CURSOR for select a.date_year,a.sales from a;
select count(*) into i from a;
if i>0 then
open fetchCursor;
REPEAT
FETCH fetchCursor into _date_year,_sales;
select sum(sales) into _sum_sales from a where a.date_year<=_date_year;
insert into b(date_year,sales) values(_date_year,_sum_sales);
set i=i-1;
UNTIL i=0
END REPEAT;
close fetchCursor;
end if;
end
写了个简单的存储过程。。你可以改改。
貌似8i不支持这种写法,9i和10g应该没有问题