declare @a table(id int, NUM int)
declare @b table(id int, A int, NUM int)
insert into @a values(1, 500)
insert into @a values(2, 200)
insert into @a values(3, 30)
insert into @a values(4, 400)
insert into @b values(1, 1, 20)
insert into @b values(1, 1, 20)
insert into @b values(1, 1, 20)
insert into @b values(1, 2, 50)
insert into @b values(1, 2, 50)
insert into @b values(1, 3, 60)
insert into @b values(1, 4, 20)
insert into @b values(2, 1, 10)
insert into @b values(3, 1, 10)
select * from @a
select * from @b
declare @id int
set @id = 1
update @a
set NUM = NUM - isnull(tt.cc, 0) from (select SUM(t.c) cc from (select SUM(distinct b.NUM) c from @b b where b.id = @id group by b.id, b.A) t) tt
where id = @id
create table b(id int, A int, NUM int)
insert into b select 1, 1, 20
insert into b select 1, 1, 20
insert into b select 1, 1, 20
insert into b select 1, 2, 50
insert into b select 1, 2, 50
insert into b select 1, 3, 60
insert into b select 2, 1, 10
insert into b select 3, 1, 10
go
create table a(id int, NUM int)
insert into a select 1, 500
insert into a select 2, 200
insert into a select 3, 30
insert into a select 4, 400
select a.id,a.num-isnull(b.sums,0) num
from a left join (
select [id],sum(num) sums
from b
group by [id]) b
on a.[id]=b.[id]
或者
update T
set T.NUM= T.NUM-T2.Num
from a表 T inner join (select id,sum(Num) Num from (select distinct id,A,Num from b表) T1 group by id,A) T2 where T2.id = T.id