日期:2014-05-16  浏览次数:21000 次

SQL 当前表与历史表字段对比 两个表结构相同(在线等小弟只有20分了非常感谢)
有三个表A(当前表),B(历史表),C(对比表)A与B根据nameID和YM对比找出两表中不同的信息 然后把不同信息插入到表C中,
table A(当前表)YM和nameId为主键
YM(期次)  name  nameId adress 
201309   张三   01     济南

table B(历史表) YM和nameId为主键

YM(期次)  name  nameId adress
201308    李四   01     泰安
A与B对比后不同信息如下表C
table C(对比表) YM,nameId,tbCode和fdCode为主键
YM(期次)  nameId  tbCode(变更字段所在表)  fdCode(变更字段) last(变更前内容) end(变更后内容)
201309      01          A                  name               李四              张三
201309      01          A                  adress             泰安            济南



------解决方案--------------------
左连接 判断值
------解决方案--------------------
是 nameId 相同其他字段不同就计入C表?
------解决方案--------------------
是以当前表为对照表吗 ?


with tableA as
(
     select '201309' ym,'张三' name,'01' nameid,'济南' adress from dual union all
     select '201309' ym,'丢丢' name,'02' nameid,'北京' adress from dual 
),tableB as
(
     select '201308' ym,'李四' name,'01' nameid,'南京' adress from dual union all
     select '201308' ym,'豆豆' name,'02' nameid,'北京' adress from dual 
)

select ym,nameid,'A' tbCode,'name' fdCode,n1 last,n2 end