日期:2014-05-18  浏览次数:20472 次

求一sql语句,如何同步结构相同内容不同的表的字段
表A

A1 A2 A3 A4
a b c d
e f g h

表B

B1 B2 B3 B4
a b 4 5
e r g 6

现在连接的条件是A1 = B1 然后 A2 B2,A3 B3,A4 B4不相等的就加起来,相等的就不管

得出的新的表A为

A1 A2 A3 A4
a b c4 d5
e fr g h6

我用case判断相等好象不行
是否用where条件每个字段判断一次或者说有类似case的更新语句呢?
n个字段用where有点麻烦
谢了

------解决方案--------------------
SQL code
select a.a1,a2=(case when a2<>b2 then a2+b2 else a2 end),
            a3=(case when a3<>b3 then a3+b3 else a3 end),
            a4=(case when a4<>b4 then a4+b4 else a4 end)
from a,b
where a.a1 = b.b1

------解决方案--------------------
select a.a1,case when a2=b2 then a.a2 else a2+b2 end as a2,case when a3=b3 then a.a3 else a3+b3 end as a3,case when a4=b4 then a.a4 else a4+b4 end as a4 from a inner join b on a.a1=b.b1
------解决方案--------------------
create table #表A(A1 varchar(5),A2 varchar(5),A3 varchar(5),A4 varchar(5))
insert #表A select 
'a', 'b', 'c', 'd' insert #表A select 
'e', 'f', 'g', 'h'
create table #表B(B1 varchar(5),B2 varchar(5),B3 varchar(5),B4 varchar(5)) 
insert #表B select 
'a' , 'b', '4', '5' insert #表B select
'e' , 'r', 'g', '6'
----------------------- 
select a.A1,
case when a.A2=b.B2 then a.A2 else a.A2+b.B2 end A2,
case when a.A3=b.B3 then a.A3 else a.A3+b.B3 end A3, 
case when a.A4=b.B4 then a.A4 else a.A4+b.B4 end A4
from #表A a left join #表B b on a.A1=b.B1 
-------------
a b c4 d5
e fr g h6