一个超级难的行合并
有一个表T1,在T1中有两个列C1,C2,表中的数据如下 
 C1            C2   
 1                  1 
 4                  NULL 
 NULL         5 
 7                  NULL 
 NULL         9 
 12               12 
 14               NULL 
 NULL         16   
 我想通过一个select语句来得到下面的结果:   
 C1            C2   
 1                  1 
 4                  5 
 7                  9 
 12               12 
 14               16   
 请问这个select语句怎么写?
------解决方案--------------------  declare @t table ( 
 C1    int, 
 C2 int 
 )   
 insert @t select 
 1  ,    1 
 union all select 
 4   ,   NULL 
 union all select 
 NULL ,  5 
 union all select 
 7    ,  NULL 
 union all select 
 NULL ,  9 
 union all select 
 12   ,  12 
 union all select 
 14   ,  NULL 
 union all select 
 NULL ,  16   
 select IDENTITY(int,1,1) as id,* 
 into # 
 from @t   
 select C1,C2 from # where C1 is not null and C2 is not null 
 union all 
 select T2.C1,T1.C2 from # t1 full join # t2  
 on (select count(*) from # where C1 is null and Id <=T1.Id)=(select count(*) from # where C2 is null and Id <=T2.Id) 
 where T1.C1 is null 
 and T2.C2 is null   
 drop table #   
 --结果 
 C1          C2           
 ----------- -----------  
 1           1 
 12          12 
 4           5 
 7           9 
 14          16   
 (所影响的行数为 5 行)   
------解决方案--------------------按照楼主的排序   
 declare @t table ( 
 C1    int, 
 C2 int 
 )   
 insert @t select 
 1  ,    1 
 union all select 
 4   ,   NULL 
 union all select 
 NULL ,  5 
 union all select 
 7    ,  NULL 
 union all select 
 NULL ,  9 
 union all select 
 12   ,  12 
 union all select 
 14   ,  NULL 
 union all select 
 NULL ,  16 
 union all select 
 17 ,  Null		--加多一行   
 select IDENTITY(int,1,1) as id,* 
 into # 
 from @t   
 select C1,C2 
 from ( 
 select C1,C2,Id from # where C1 is not null and C2 is not null 
 union all 
 select T2.C1,T1.C2,isnull(T1.id,T2.Id) as Id from # t1 full join # t2  
 on (select count(*) from # where C1 is null and Id <=T1.Id)=(select count(*) from # where C2 is null and Id <=T2.Id) 
 where T1.C1 is null 
 and T2.C2 is null 
 ) as t 
 order by id   
 drop table #   
 --结果 
 C1          C2           
 ----------- -----------  
 1           1 
 4           5 
 7           9 
 12          12 
 14          16 
 17          NULL   
 (所影响的行数为 6 行)   
------解决方案--------------------select id = identity(int , 1,1) ,c1 into tb1 from t1 where c1 is not null 
 select id = identity(int , 1,1) ,c2 into tb2 from t1 where c2 is not null 
 --查询 
 select c1,c2 from tb1 , tb2 where t1.id = t2.id 
 --更改 
 drop table t1 
 select c1,c2 from tb1 , tb2 into t1 where t1.id = t2.id   
------解决方案----------------------测试数据:@T1 
 declare @T1 table(C1 int,C2 int) 
 insert @T1 
 select 1,1 union all