补记录

SQL code

表A
code name
COD  a
SO2  b
NO2  c

表B
EnterName code 2010 2011
a         COD  1    2
b         SO2  1    3

结果
EnterName code 2010 2011
a         COD  1    2
a         SO2  0    0
a         N02  0    0
b         COD  1    3
b         S02  0    0
b         N02  0    0


意思就是把表B中缺少的对应的表A(字典表)里的一一补上。
谢谢~~!

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

结果刚写错了,重新补上
SQL code

结果
EnterName code 2010 2011
a         COD  1    2
a         SO2  0    0
a         N02  0    0
b         COD  0    0
b         S02  1    3
b         N02  0    0



谢谢~~

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

SQL code
select a.name as EnterName,a.code,isnull(b.[2010],0),isnull(b.[2011],0) from 表A a
left join 表b b on a.name+a.code=b.EnterName+b.code
where exists(select 1 from 表b where a.name=b.EnterName )

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

SQL code

declare @表A table (code varchar(3),name varchar(1))
insert into @表A
select 'COD','a' union all
select 'SO2','b' union all
select 'NO2','c'

declare @表B table (EnterName varchar(1),code varchar(3),[2010] int,[2011] int)
insert into @表B
select 'a','COD',1,2 union all
select 'b','SO2',1,3


select isnull(bb.EnterName,aa.EnterName),
isnull(bb.code,aa.code),
isnull([2010],0),
isnull([2011],0)
from (
select a.code,b.EnterName from @表A a cross join @表B b
) aa left join @表B bb 
on aa.code=bb.code and aa.EnterName=bb.EnterName
order by aa.EnterName 
/*
a    COD  1           2
a    SO2  0           0
a    NO2  0           0
b    COD  0           0
b    SO2  1           3
b    NO2  0           0
*/

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