达令说
计算列不能引用其他表的列,但是可以通过函数来实现,先建立下面这个函数:create function DingXue(@id int) returns intasbegin declare @sum int select @sum=sum(num) from b where id=@id return @sumend然后创建表:create table A(Id int identity(1,1), Num as dbo.DingXue(Id), tt int)create table B(Id int identity(1,1), ParentId int, Num int)测试如下:insert into A(tt) values(1)insert into B(ParentId,Num) values(1,1234)insert into B(ParentId,Num) values(1,4321)select * from Aselect * from B=================A表里的tt只是为了增加A表里的记录 :)======================其实我一直觉得数据库里没有必要存放计算列,因为“计算”这种事情,让程序来做会更简单,非要数据库来做,也可以直接使用 select a.id, sum(b.num) as num from a inner join b on a.id=b.parentid 这种方式来实现另外,也可以在B表加触发器来实现,介理相对于函数来说,我对触发器的抵触情绪更严重一些,呵呵,所以这里提供函数方式的实现