对大家太简单的一句SQL语句

在SQL2000中,如何用表A的汇总数据,更新或插入到表B中,如果表B中不存在表A的编码,则插入汇总数据,如果存在表A的编码,则更新汇总数据?急,在线等~~~

作者: wfcyl   发布时间: 2011-06-16

你不急。急还不给表结构和数据。。。

作者: zy112429   发布时间: 2011-06-16

简单的说明一下表结构:
明细表A: NOID ,MainCode,MCode,CName ,Total 
汇总表B:NOID,MCode,CName,MTotal
现在要把表A中的数据以MCode,CName为条件,汇总Total的数据插入或更新到汇总表B中,在表B中,如果和表A的MCode,CName相同则更新表B中的MTotal的数据,如果不同,则插入到表B中

作者: wfcyl   发布时间: 2011-06-16

不要说用循环或游标的方式哦,最好能用一两句SQL语句搞定的

作者: wfcyl   发布时间: 2011-06-16

SQL code
update b set MTotal=tb.Total
from 
(select MCode,CName,sum(Total) as Total 
from a group by MCode,CName)
as tb
where tb.MCode=b.MCode and tb.CName=b.CName

作者: cd731107   发布时间: 2011-06-16

SQL code

--更新已有的
update B set B.MTotal=AA.MTotal
from B
inner join (select MCode,CName,sum(Total) MTotal from A group by MCode,CName) AA
on B.MCode=AA.MCode and B.CName=AA.CName

--新增没有的
insert into B 
select A.NOID,A.MCode,A.CName,sum(A.Total) MTotal 
from A 
left join B on A.MCode=B.MCode and A.CName=B.CName
where B.MCode is null and B.CName is null
group by A.NOID,A.MCode,A.CName

作者: ap0405140   发布时间: 2011-06-16