现有一张城市表 A:
    ID  Address  SubID
    1   北京市     0
    2   天津市     0
    3   河北省     0
    4   东城区     1
    5   朝阳区     1
    6   河北区     2
    7   河东区     2
    8   唐山市     3
    9   石家庄     3
    .........
现在操作以上表建一新表: B 效果如下
    PC_ID   PC_Province  PC_City 
    00001    北京市         ---
    00002    天津市         ---
    00003    河北省         ---
    01004    北京市        东城区     
     01005    北京市        朝阳区
     02006    天津市       河北区
     02007    天津市       河东区
     03008    河北省       唐山市
     03009    河北省       石家庄其中PC_ID 是 SubID(父节点)+ID ,已经实现  right('0000'+convert(varchar(2),SubID),2)+right('0000'+convert(varchar(3),ID),3)as pc_id其他怎么来实现呢? 谢谢了先!
   

解决方案 »

  1.   

    (select Address from A where SubId>0) t1 left outer join (select Address from A where SubId=0) t2 on t1.SubID = t2.ID
      

  2.   

    自己和自己连 条件on是ID=subid
      

  3.   

    STRING TT= right('0000'+convert(varchar(2),SubID),2)+right('0000'+convert(varchar(3),ID),3)update A SET PC_ID='TT' WHERE SubID = (SELECT SubID 
     FROM A )
      

  4.   

    分析了一下,SubID = 0的没有办法对照,可以取出来单独处理
    SELECT SubID+ID,Address,'' FROM A
    WHERE SubID ='0'我SubID <> 0的就非常好处理了
    SELECT A1.SubID+A1.ID,A2.Address,A1.Address FROM A A1
    join A A2 ON A1.SubID=A2.ID2个合并一下,结果就出来了。哈哈
    SELECT A1.SubID+A1.ID,A2.Address,A1.Address FROM A A1
    join A A2 ON A1.SubID=A2.ID
    union
    SELECT SubID+ID,Address,'' FROM A
    WHERE SubID ='0'