数据库联合统计

duck530 2010-01-06 12:28:33
A表(id,name number)
1 a 12
2 b 10
B表(id name num)
1 a 2
2 a 3
3 a 4

统计后为:
id name result
1 a 3
2 b 10

意思是:A表的number与B表的num字段相减,但是减的时候要将B表中与A表name字段相同的列的num相加再减,若B表没有A表里name的字段则将A表的number减0处理得到需要的新表

也不知道说清楚没有,已经问了几次,希望高手快帮哈忙呀!
...全文
43 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2010-01-06
  • 打赏
  • 举报
回复
create table A(id int,name varchar(10),number int) 
insert into a values(1 , 'a' , 12 )
insert into a values(2 , 'b' , 10 )
create table B(id int,name varchar(10),num int)
insert into b values(1 , 'a' , 2 )
insert into b values(2 , 'a' , 3 )
insert into b values(3 , 'a' , 4 )
go

select a.id ,
a.name,
result = number - isnull((select sum(num) from b where name = a.name),0)
from a


drop table a , b

/*
id name result
----------- ---------- -----------
1 a 3
2 b 10

(所影响的行数为 2 行)
*/
dawugui 2010-01-06
  • 打赏
  • 举报
回复
select t.id , 
t.name,
number - isnull((select sum(num) from b where name = t.name),0)
from a t
nianran520 2010-01-06
  • 打赏
  • 举报
回复
select r.name,sum(r.number)-isnull(sum(t.num),0)
from A r left join B t
on r.name=t.name
group by r.name

27,580

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧