楼主确保给出的数据文件没有将nodes,parent互换吧?
怎么这里的示例与文本文件上的不同?

解决方案 »

  1.   

    使用Like,若当前为Nodes为:1.1.1.1
    如:select sum(字段) where nodes like '1.1.1.1%'
      

  2.   

    --如果是按楼主目前帖子上的数据进行统计,这样就可以了select nodes,数量=count(*) 
    from 表 
    where nodes like '1.1.1%'
    group by left(nodes,5)
      

  3.   

    上述是部门表https://hzbss.vicp.net/tj.txt中是数据表
      

  4.   

    https://hzbss.vicp.net/t.txt 部门数据表
    https://hzbss.vicp.net/tj.txt是业务数据表
      

  5.   

    --否则的话,就这样统计
    declare @nodes varchar(100)
    set @nodes='1.1.1' --要统计的nodes--统计处理
    declare @count int,@l int,@r int
    declare @t table(nodes varchar(100),level int)
    select @count=0,@l=0,@r=1
    insert @t select @nodes,@l
    while @r>0
    begin
    select @l=@l+1,@count=@count+@r
    insert @t select a.nodes,@l
    from 表 a join @t b on a.parent=b.nodes
    where b.level=@l-1
    set @r=@@rowcount
    end
    select nodes=@nodes,数量=@count
      

  6.   

    --写成函数就是这样
    create function f_total(
    @nodes varchar(100)
    )returns @re table(nodes varchar(100),数量 int)
    as
    begin --统计处理
    declare @count int,@l int,@r int
    declare @t table(nodes varchar(100),level int)
    select @count=0,@l=0,@r=1
    insert @t select @nodes,@l
    while @r>0
    begin
    select @l=@l+1,@count=@count+@r
    insert @t select a.nodes,@l
    from 表 a join @t b on a.parent=b.nodes
    where b.level=@l-1
    set @r=@@rowcount
    end
    insert @re select nodes=@nodes,数量=@count
    return
    end
    go--调用
    select * from f_total('1.1.1')
      

  7.   

    怎么数据又变了? 只有nodes,没有parent
      

  8.   

    https://hzbss.vicp.net/t.txt是部门
    https://hzbss.vicp.net/tj.txt是业务数据表
      

  9.   

    https://hzbss.vicp.net/tj.txt  是放错了 是没有parent的
      

  10.   

    还是放错了吧?nodes (varchar)               parent (varchar)
    1.1.1.1.5                      0311060001
    1.1.1                          0311060002
    1.1.1.1.5                      0311070001
    1.1.1.1.5                      0311070003
    1.1.1.1.5                      0311070004
    1.1.1.1.5                      0311070005
      

  11.   

    现在对了,我数据库的数据是这样第一次放的
    parent是我后来根据nodes,加上的信息
      

  12.   

    你的编号是否是有规律的,比如:
    1.1.1.1.5 就是 1.1.1的子?tj.txt是业务数据表
    那你要统计什么数量,你的表中可没有数量字段哦,难道计数?
      

  13.   

    --那这样统计就行啦:select a.nodes,数量=count(*) 
    from 部门表 a join 业务表 b on a.nodes=b.nodes
    where a.nodes like '1.1.1%'
    group by left(a.nodes,5)
      

  14.   

    where a.nodes like '1.1.1%'
    group by left(a.nodes,5)  5 ???
      

  15.   

    --上面错了:select nodes='1.1.1',数量=count(*) 
    from 部门表 a join 业务表 b on a.nodes=b.nodes
    where a.nodes like '1.1.1%'
    group by left(a.nodes,5)  --len('1.1.1')的长度是5
      

  16.   

    zjcxc(邹建) 你想干什么??
      

  17.   

    如果真的做了什么,那可能是我忘记切换窗口了.因为在回答你的问题的时候,也在回答其他一些问题,一般我都会测试一下我的答案.如果没有切换窗口,就可能是在你的SQL上做了