父表:T_A(A_id,A_Name)
子表:T_B(B_id,B_Name,A_id)
如何能够得到这样的形式:
比如V_C(C_Id,C_Name,A_id,B_id,Pid--父id)如下数据:
T_A:(2条)
(1,A1)
(2,A2)
T_B:(3条)
(1,B1,1)
(2,B2,1)
(3,B3,2)得到V_C:(5条)
(1,A1,1,null,0)
(2,B1,1,1,1)
(3,B2,1,2,1)
(4,A2,2,nul,0)
(5,B3,2,3,2)
 

解决方案 »

  1.   


    --> 测试数据: @T_A
    declare @T_A table (A_id int,A_Name varchar(2))
    insert into @T_A
    select 1,'A1' union all
    select 2,'A2'
    --> 测试数据: @T_B
    declare @T_B table (B_id int,B_Name varchar(2),A_id int)
    insert into @T_B
    select 1,'B1',1 union all
    select 2,'B2',1 union all
    select 3,'B3',2select c_id=row_number() over(order by A_id,c_name),* from
    (select C_Name=A_name,A_id,B_id=null,Pid=0 from @T_A
    union all
    select b_name,A_id,B_id,A_id from @T_B)a
    order by A_id,c_name--结果:c_id                 C_Name A_id        B_id        Pid
    -------------------- ------ ----------- ----------- -----------
    1                    A1     1           NULL        0
    2                    B1     1           1           1
    3                    B2     1           2           1
    4                    A2     2           NULL        0
    5                    B3     2           3           2