用sql2000查询如何实现
create table tb(id varchar(3) ,pid varchar(8), zid varchar(8) , dw varchar(10)) 
insert into tb values('1' , 'A0001','10001', '1') 
insert into tb values('2' , '10001','10002', '1') 
insert into tb values('3' , 'A0001','20001', '1') 
insert into tb values('4' , '20001','20002', '1') 
insert into tb values('5' , '10002',' ', '1') 
insert into tb values('6' , '20002',' ', '1') 
go 
表内容如下: 序号   父件      子件    单位用量
   1    A0001     10001    1
   2    10001     10002    1  
   3    A0001     20001    1
   4    20001     20002    1 
   5    10002              1
   6    20002              1
查询如何实现这个:  层次      父件      子件       单位用量
    1       A0001     10001       1
      2     10001     10002       1
        3   10002                 1
      2     20001     20002       1
        3   20002                 1

解决方案 »

  1.   

    http://blog.csdn.net/fredrickhu/archive/2009/09/20/4573387.aspx参考
      

  2.   

    if object_id('tb') is not null
    drop table tb
    go
    create table tb(id varchar(3) ,pid varchar(8), zid varchar(8) , dw varchar(10)) 
    insert into tb values('1' , 'A0001','10001', '1') 
    insert into tb values('2' , '10001','10002', '1') 
    insert into tb values('3' , 'A0001','20001', '1') 
    insert into tb values('4' , '20001','20002', '1') 
    insert into tb values('5' , '10002',' ', '1') 
    insert into tb values('6' , '20002',' ', '1') 
    go declare @t table(层次 int,父件 varchar(8),子件 varchar(8),单位用量 int,px varchar(8000))
    declare @lvl int
    set @lvl=1
    insert @t select @lvl,pid,zid,dw,right('00000'+ltrim(id),5) from tb where zid=' '
    while @@rowcount>0
    begin
    set @lvl=@lvl+1
    insert @t select @lvl,a.pid,a.zid,a.dw,b.px+right('00000'+ltrim(a.id),5) from tb a,@t b where a.zid=b.父件 and b.层次=@lvl-1
    end
    select space(层次-1)+ltrim(层次) 层次,父件,子件,单位用量 from @t order by px/*
    层次 父件 子件 单位用量
    1 10002   1
     2 10001 10002 1
      3 A0001 10001 1
    1 20002   1
     2 20001 20002 1
      3 A0001 20001 1
    */
      

  3.   

    那在sql2005下如何实现不对呀 正确显示应该是这样的   能不能用 过程或者函数来实现呢  层次      父件      子件       单位用量
        1       A0001     10001       1
          2     10001     10002       1
            3   10002                 1
          2     20001     20002       1
            3   20002                 1