不知道我的这个问题的提法对不对,呵呵,问题是这样的,有两张表
   t1              t2                   t1 + t2
a  b  c        a1  b1  c1           a2  b2  c2  c3
1  4  5        1   4   6            1   4   5   6
2  8  4  -->   2   8   8    --->    2   8   4   8
4  6  3        4   5   4            4   6   3
               3   5   3            4   5       4
                                    3   5       3我解释一下我的意图:我想合并t1、t2两张表1 如果两张表某一行的第一、第二字段的值相等,那么相同字段的值放入合并视图的a2、b2字段,t2的c1字段值放入合并视图的c3列当中
2 如果两张表某行的第一或第二字段的值不同,那么把两表的两比较行分别放到合并视图去
3 如:两表中,第一行和第二行的a、b字段都一样,那么在合并视图中,a2、b2的值一样了,然后c、c1的值就分别放到合并视图的c2、c3当中
      两表中,第三行的a、b字段不一样,那么把这两行分别放到视图中去,t1的c字段值放到合并视图的c2中,t2的c1字段放入合并视图的c3中
      t2表的第四行的a、b字段不与t1任何一行相符,那么也把他放到视图中去,c1值放到合并视图c3中不知道这样说大家明不明白,对我来说,这个问题好复杂,但我很需要这样的合并结果,想了好久了,没能解决请各位大大指点指点,谢谢咯 ^_^

解决方案 »

  1.   

      t1              t2                  t1 + t2 
    a  b  c        a1  b1  c1          a2  b2  c2  c3 
    1  4  5        1   4   6           1   4   5   6 
    2  8  4  -->   2   8   8    --->   2   8   4   8 
    4  6  3        4   5   4           4   6   3 
                   3   5   3           4   5       4 
                                       3   5       3 怎么一发帖子格式就乱了呢?重新整理发过
      

  2.   

    select
      isnull(t1.a,t2.a1) as a2,
      isnull(t1.b,t2.b1) as b2,
      isnull(t1.c,0) as c2,
      isnull(t2.c1,9) as c3
    from t1
    full join t2 on t1.a=t2.a1 and t1.b=t2.b1
      

  3.   

    select
      isnull(t1.a,t2.a1) as a2,
      isnull(t1.b,t2.b1) as b2,
      isnull(t1.c,0) as c2,
      isnull(t2.c1,0) as c3
    from t1
    full join t2 on t1.a=t2.a1 and t1.b=t2.b1
      

  4.   

    if object_id('[t1]') is not null drop table [t1]
    go
    create table [t1]([a] int,[b] int,[c] int)
    insert [t1]
    select 1,4,5 union all
    select 2,8,4 union all
    select 4,6,3  
    if object_id('[t2]') is not null drop table [t2]
    go
    create table [t2]([a1] int,[b1] int,[c1] int)
    insert [t2]
    select 1,4,6 union all
    select 2,8,8 union all
    select 4,5,4 union all
    select 3,5,3select
      isnull(t1.a,t2.a1) as a2,
      isnull(t1.b,t2.b1) as b2,
      isnull(t1.c,0) as c2,
      isnull(t2.c1,0) as c3
    from t1
    full join t2 on t1.a=t2.a1 and t1.b=t2.b1
    --测试结果:
    /*
    a2          b2          c2          c3          
    ----------- ----------- ----------- ----------- 
    1           4           5           6
    2           8           4           8
    4           5           0           4
    3           5           0           3
    4           6           3           0(所影响的行数为 5 行)
    */
      

  5.   

    太有才了,josy,感谢感谢!!
      

  6.   

    create table t1(a int,b int,c int)
    insert into t1 values(1 , 4 , 5)
    insert into t1 values(2 , 8 , 4)
    insert into t1 values(4 , 6 , 3)
    create table t2(a1 int,b1 int,c1 int)
    insert into t2 values(1 , 4 , 6 )
    insert into t2 values(2 , 8 , 8 )
    insert into t2 values(4 , 5 , 4 )
    insert into t2 values(3 , 5 , 3 )
    goselect t1.a a2 , t1.b b2 , t1.c c2 , t2.c1 c3 from t1 , t2 where t1.a = t2.a1 and t1.b = t2.b1
    union all
    select t1.a a2 , t1.b b2 , t1.c c2 , null c3 from t1 where not exists(select 1 from t2 where a1 = t1.a and b1 = t1.b)
    union all
    select t2.a1 a2 , t2.b1 b2 , t2.c1 c2 , null c3 from t2 where not exists(select 1 from t1 where a = t2.a1 and b = t2.b1)drop table t1 , t2/*a2          b2          c2          c3          
    ----------- ----------- ----------- ----------- 
    1           4           5           6
    2           8           4           8
    4           6           3           NULL
    4           5           4           NULL
    3           5           3           NULL(所影响的行数为 5 行)
    */
      

  7.   

    dawugui ,感谢你,看来我真的很菜呢,怎么你们都那么容易就解决这个问题了,还有那么多方法