求两个表的数据比较后插入另外一个表SQL
时间:2011-12-13
来源:互联网
目前两个表结构为:
SQL code
说明:individualcheckTaskData 和individualendorTaskData 表中的branchid是一致的,但是checkerno和endendorno可能不一致,插入规则是:
1.如果两个表branchid一样,checkerno和endendorno一样,则插入individualBmdmTaskData 表其中examinedUser和examinedName为上述两表中的checkerno,checkername;其中belongBmdm为branchid,checkNum为checktotalnum,endorNum为endortotalnum,checkEfficiency为siglecheckEfficiency,endorEfficiency为sigleendorEfficiency。
2.如果individualcheckTaskData 中checkerno有值而individualendorTaskData 中没有相关信息,则写入individualcheckTaskData表中信息,其他值为0
3.如果individualendorTaskData 中endendorno有值而individualcheckTaskData 中没有相关信息,则写入individualendorTaskData 表中信息,其他值为0
急求。。SQL语句
SQL code
create table individualcheckTaskData ( branchid varchar2(20), checkerno varchar2(20), checkername varchar2(20), siglecheckEfficiency float, checktotalnum varchar2(20) ); create table individualendorTaskData ( branchid varchar2(20), endendorno varchar2(20), endendorname varchar2(20), sigleendorEfficiency float, endortotalnum varchar2(20) ); --要插入数据的表的结构为: create table individualBmdmTaskData ( examinedUser varchar2(20) not null, examinedName varchar2(20), belongBmdm varchar2(20) not null, checkNum float, endorNum float, checkEfficiency varchar2(20), endorEfficiency varchar2(20) constraint PK_INDIVIDUALBMDMTASKDATA primary key (examinedUser, belongBmdm) );
说明:individualcheckTaskData 和individualendorTaskData 表中的branchid是一致的,但是checkerno和endendorno可能不一致,插入规则是:
1.如果两个表branchid一样,checkerno和endendorno一样,则插入individualBmdmTaskData 表其中examinedUser和examinedName为上述两表中的checkerno,checkername;其中belongBmdm为branchid,checkNum为checktotalnum,endorNum为endortotalnum,checkEfficiency为siglecheckEfficiency,endorEfficiency为sigleendorEfficiency。
2.如果individualcheckTaskData 中checkerno有值而individualendorTaskData 中没有相关信息,则写入individualcheckTaskData表中信息,其他值为0
3.如果individualendorTaskData 中endendorno有值而individualcheckTaskData 中没有相关信息,则写入individualendorTaskData 表中信息,其他值为0
急求。。SQL语句
作者: haoztao 发布时间: 2011-12-13
楼主的
checkerno和endendorno一样
和
如果individualcheckTaskData 中checkerno有值而individualendorTaskData 中没有相关信息
是不是矛盾啊
checkerno和endendorno一样
和
如果individualcheckTaskData 中checkerno有值而individualendorTaskData 中没有相关信息
是不是矛盾啊
作者: rainbow_han 发布时间: 2011-12-13
1.
SQL code
SQL code
merge into individualBmdmTaskData iv using ( select ch.branchid,ch.checkerno,ch.checkername,ch.siglecheckEfficiency,ch.checktotalnum,en.endendorname,en.sigleendorEfficiency,en.endortotalnum from individualcheckTaskData ch,individualendorTaskData en where ch.branchid=en.branchid and ch.checkerno=en.endendorno ) ce on (iv.examinedUser=ce.checkerno and iv.belongBmdm=ce.branchid) when not matched then insert (examinedUser,examinedName,belongBmdm,checkNum,endorNum,checkEfficiency,endorEfficiency) values(ce.checkerno,ce.checkername,ce.branchid,ce.checktotalnum,ce.endendorname,ce.sigleendorEfficiency,ce.endortotalnum); commit;
作者: lxpbs8851 发布时间: 2011-12-13
2.
SQL code
SQL code
merge into individualBmdmTaskData iv using ( select ch.branchid,ch.checkerno,ch.checkername,ch.siglecheckEfficiency,ch.checktotalnum from (select * from individualcheckTaskData where checkerno is not null) ch left join (select * from individualendorTaskData where checkerno is null) en on ch.branchid=en.branchid where 1=1 ) ce on (iv.examinedUser=ce.checkerno and iv.belongBmdm=ce.branchid) when not matched then insert (examinedUser,examinedName,belongBmdm,checkNum,endorNum,checkEfficiency,endorEfficiency) values(ce.checkerno,ce.checkername,ce.branchid,ce.checktotalnum,0.0,null,null); commit;
作者: lxpbs8851 发布时间: 2011-12-13
SQL code
2. merge into individualBmdmTaskData iv using ( select ch.branchid,ch.checkerno,ch.checkername,ch.siglecheckEfficiency,ch.checktotalnum from (select * from individualcheckTaskData where checkerno is not null) ch left join (select * from individualendorTaskData where endendorno is null) en on ch.branchid=en.branchid where 1=1 ) ce on (iv.examinedUser=ce.checkerno and iv.belongBmdm=ce.branchid) when not matched then insert (examinedUser,examinedName,belongBmdm,checkNum,endorNum,checkEfficiency,endorEfficiency) values(ce.checkerno,ce.checkername,ce.branchid,ce.checktotalnum,0.0,null,null); commit; 3. merge into individualBmdmTaskData iv using ( select en.branchid,en.endendorno,en.endendorname,en.sigleendorEfficiency,en.endortotalnum from (select * from individualendorTaskData where endendorno is not null) en left join (select * from individualcheckTaskData where checkerno is null) ch on ch.branchid=en.branchid where 1=1 ) ce on (iv.examinedUser=ce.endendorno and iv.belongBmdm=ce.branchid) when not matched then insert (examinedUser,examinedName,belongBmdm,checkNum,endorNum,checkEfficiency,endorEfficiency) values(ce.endendorno,ce.endendorname,ce.branchid,0.0,ce.endortotalnum,null,ce.sigleendorEfficiency); commit;
作者: lxpbs8851 发布时间: 2011-12-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28