在Sql Mobile下有一表
id  name url pid
a   根   a   root
b   子   a   a
c   子   a   a
d   根   b   root求一Select语句,能够查出满足条件的节点的子节点数。得到结果如下:
id name url pid subcounts
a  根   a   root 2
d  根   b   root 0

解决方案 »

  1.   

    create table T(id varchar(10), name varchar(10), url varchar(10), pid varchar(10))
    insert T select 'a',   '根',  'a',   'root'
    union all select 'b',   '子',   'a',   'a'
    union all select 'c',   '子',   'a',   'a'
    union all select 'd',   '根',   'b',   'root'
    create function fun(@id varchar(10))
    returns int
    as
    begin
    declare @re int
    select @re=count(*) from T where pid=@id return @re
    end
    select *, subcounts=dbo.fun(id) from T
    where pid='root'--result
    id         name       url        pid        subcounts   
    ---------- ---------- ---------- ---------- ----------- 
    a          根          a          root       2
    d          根          b          root       0(2 row(s) affected)
      

  2.   

    select id, name, url, pid, subcounts=(select count(pid) from T where pid=a.id) 
    from T a
    where a.pid='root'
      

  3.   

    用NoThiNg2050(子虚乌有) 比较适合我,但在SDF的数据库下出错,Access和Sql Server中成功
    marco08(天道酬勤)的使用了函数,数据库不支持函数或者是我没发现有这个功能。
    用group by分组提示有些字段不在列