建立2张表:table1,table1child
table1中字段 ersonName,personNameoid,totalnum(总计数量)
table1child中字段:table1childoid,title,personNameoid,num(单项数量)
在table1里面添加3条记录,totalnum为空
在table1child按照外建关系添加多条记录,num为数字
用sql语句把对应的子表table1child数据统计到父表table1的totalnum里面create table table1(personNameoid int not null PRIMARY KEY,personName varchar(10) not null,totalnum varchar(10))
insert into table1(personNameoid,personName)values(333,'diablo1')
insert into table1(personNameoid,personName)values(335,'diablo2')
insert into table1(personNameoid,personName)values(339,'diablo3')
create table tablechild(tablechildoid int not null,title varchar(20), personNameoid int foreign key references table1(personNameoid),num int)
insert tablechild (tablechildoid,title,personNameoid,num)values(3330,'script0',333,1)
insert tablechild (tablechildoid,title,personNameoid,num)values(3331,'script1',333,9)
insert tablechild (tablechildoid,title,personNameoid,num)values(3332,'script2',333,90)
insert tablechild (tablechildoid,title,personNameoid,num)values(3333,'script3',335,60)
insert tablechild (tablechildoid,title,personNameoid,num)values(3334,'script4',335,66)
insert tablechild (tablechildoid,title,personNameoid,num)values(3335,'script5',339,55)declare diacursor cursor for select personnameoid from tablechild ;
declare @personnameoid1 int,@num1 int;
open diacursor;
fetch next from diacursor into @personnameoid1 ,@num1; while @@fetch_status=0 beginupdate table1 set totalnum=(select sum(@num1) where personnamelid=@personnameoid1);
end
deallocate diacursor

解决方案 »

  1.   

    update table1 set totalnum=(select sum(@num1) where personNameoid=@personnameoid1);把personNameoid改正即可。
      

  2.   

    不行呀,还是错服务器: 消息 16924,级别 16,状态 1,行 4
    Cursorfetch: 在 INTO 列表中声明的变量数目必须与所选择的列数目匹配。
      

  3.   

    定义CURSOR时只SELECT出列personnameoid,而你用的fetch next from diacursor into @personnameoid1,@numl;是2列,列不匹配哈。。
                                           谢谢  [email protected]