select sum(dd.t1) from (SELECT SUM(sr) AS t1 from b2 union select -sum(zc) from b3) dd
试试这个看看
这个得到的值有可能是负的
试试这个看看
这个得到的值有可能是负的
[此贴子已经被作者于2006-5-24 16:31:13编辑过]
[此贴子已经被作者于2006-5-24 16:31:13编辑过]
如果想显示t1,t2则可这样写(构建了临时表)
SELECT sum(sr) as t1, num=identity(int,1,1) into cc from b2
SELECT sum(zc) as t2, num=identity(int,1,1) into dd from b3
select t1,t2,t1-t2 from cc,dd
drop table cc,dd
以上很多出错的原因是,表与表有进行自动连接了,这样得到的结果表不符原题。题目的内在意思是要求行的重叠,而不是连接(导致横向发展,自动添加了其他数据)。
如
b2
sr zc id
80 50 001
70 60 002
72 60 003
b3
sr zc id
80 50 001
要得到
80 50 001
70 60 002
72 60 003
80 50 001
确得到
sr zc id sr zc id
80 50 001 80 50 001
70 60 002 80 50 001
72 60 003 80 50 001
所以应该用到union
假如创建一临时表table(sr,zc)
insert into table
select sr,zc from b2
union
select sr,zc from b3
select sum(sr),sum(zc),sum(sr)-sum(zc) from table
现在应该就不回出错了。