各位同行:TABLE: tdM328ORG_CD ORG_LEVEL UPPER_ORG_CD
--------------------------------
LLJ      4           wy01
TWG      4           BYM
wy01          3           LYG
BYM      3           LLJ01
LLJ0          2           XXX
LYG      2           XXX
LYG1        2           XXX
XXX      1           (NULL)我用下面的SQL查:
SELECT 
lpad(org_cd,level*2+length(org_cd),' ')
From tdM328
connect by prior org_cd = upper_org_cd   
start with upper_org_cd is null   
结果:
  XXX
    LLJ01
      BYM
        TWG
    LYG
      wy01
        LLJ
    LYG1
这没有问题,现在我想查“LLJ”的一个树,即想得到结果:
  XXX
    LYG
      wy01
        LLJORG_CD = 'LLJ' 这个条件往哪儿加?谢了!

解决方案 »

  1.   

    SELECT 
    lpad(org_cd,level*2+length(org_cd),' ')
    From tdM328
    connect by prior org_cd = upper_org_cd   and prior ORG_CD = 'LLJ' 
    start with upper_org_cd is null
      

  2.   

    SELECT 
    lpad(org_cd,(4-level)*2+length(org_cd),' ')
    From tdM328
    connect by prior upper_org_cd = org_cd 
    start with ORG_CD = 'LLJ' 
    order by level desc;其中LPAD语句中(4-level)的中的"4"应该是最大层数,但如果写在同一句SQL中显得太过复杂,
    所以在前面再写一句SQL,这样显得清晰一些.SELECT 
    max(level) 
    From tdM328
    connect by prior upper_org_cd = org_cd 
    start with ORG_CD = 'LLJ' ;