表一
L1   L2
a    1
b    2
c    3
表二
L1   L2
b    10
c    20
d    30
表三
L1   L2
a    100
b    200
d    300L1,L2,L3,L4为列名
想要实现的结果
L1   L2   L3   L4
a    1    0    100
b    1    10   100
c    1    10   0
d    0    10   100
求高人解答,谢谢

解决方案 »

  1.   

    select a.*,isnull(b.L2,0),isnull(c.L2,0),isnull(d.L2,0)
    from(select L1 from 表一 union select L1 from 表二 union select L1 from 表三) a
    left join 表一 b on a.L1=b.L1
    left join 表二 c on a.L1=c.L1
    left join 表三 d on a.L1=d.L1
      

  2.   

    select a.L1,isnull(b.L2,0)as L2,isnull(c.L2,0) as L3,isnull(d.L2,0) as L4
    from
    (select L1 from 表一 union select L1 from 表二 union select L1 from 表三) a
    left join 表一 b on a.L1=b.L1
    left join 表二 c on a.L1=c.L1
    left join 表三 d on a.L1=d.L1
      

  3.   

    select a.L1,case when a.L2 IS NULL then 0 else 1 end L2 ,
           case when c.L2 IS NULL then 0 else 10 end L3,
           case when d.L2 IS NULL then 0 else 100 end L4
    from 表一 a
    full join 表二 c on a.L1=c.L1
    full join 表三 d on a.L1=d.L1