表:tbltree: 
字段: treename 

101 '是1的子节点 
10101'是1和101的子节点 
102 '是1的子节点 
10201'是1和102的子节点 
2 ' 
201 '是2的子节点 
20101'是2和201的子节点 如何select 出 treename的时候把1和101的子节点数量得出以上字段得值是举例,还有其它得值

解决方案 »

  1.   

    select  treename ,
    (select count(*) from tbltree where treename like rtrim(a.treename)+'%')-1 as 子节点数
    from tbltree a
    where ...
      

  2.   

    --SQL server 2005的处理办法
    /*
    列出所有父接点的子接点,个数.
    */WITH MgrCTE(父接点, 深度)
    AS
    (
      SELECT 父接点, 0
      FROM 表
      WHERE 父接点IS NOT NULL
      UNION ALL
      SELECT M.父接点, lvl + 1
      FROM 表 AS M
        JOIN MgrCTE AS E
          ON E.父接点= M.子接点
      WHERE M.父接点IS NOT NULL
    )
    SELECT 父接点, COUNT(*) AS cnt
    FROM MgrCTE
    GROUP BY 父接点