对大家太简单的一句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中
明细表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