请教一个树形结构的sql语句怎么些写?(50分)

  • 主题发起人 主题发起人 xzb_97
  • 开始时间 开始时间
X

xzb_97

Unregistered / Unconfirmed
GUEST, unregistred user!
现有一个表 tb
id price sum
-----------------------------------
12.34 null
12.34.1 2
12.34.2 5
12.35 null
12.35.1. null
12.35.1.1 1
12.35.1.1.1 3
12.35.1.1.2 5
12.35.1.2 1
12.35.2 null
12.35.2.1 1
12.35.2.2 2

现在要逐级的汇总price,请教该怎么写sql???
比如说12.35,就是由12.35.1和12.35.2加上来的,而12.35.1又是由12.35.1.1和12.35.1.2汇总而来的,依次而来,请教大侠们该怎么写啊???
 
表数据有误,应是这样:
tb
id price sum
-----------------------------------
12.34 null
12.34.1 2
12.34.2 5
12.35 null
12.35.1. null
12.35.1.1 null
12.35.1.1.1 1
12.35.1.1.2 2
12.35.1.2 1
12.35.2 null
12.35.2.1 1
12.35.2.2 2
 
完全无规律,关注
待高手解答
 
xiexiez支持!!!
 
提个思路给你,看能不能对你有点启发,你在表里面加多一个字段Pid,用来显示当前id的来源ID,这个字段的值由系统自动来控制,如12.34.1,其Pid为12.34,12.34.1.1,其pid为12.34.1,这样的话如果要得到你想要的资料还是比较容易得出来的,我们这边如果是要用树型显示的话都会加多一个用来显示来源的字段值,
 
有个小问题顺便问一下,
12.35.1 12.35.2 12.377 12.377.2.1

我想查找出xx.xx,也就是第二个点以前的,该怎么写????
 
select iid,Sum(Price) from
(
select tb.id iid,ttt.* from tb left join (select * from tb) ttt on len(tb.id) <= len(ttt.id) and ttt.id like tb.id+'%'
) ttttt
Group By iid
 
如果要查询xx.xx的数据可以用下面的来执行
select * from tb
where patindex('%.%.%',id)=0 and CHARINDEX('.',id,1)>0
如果要查询xx.xx.xx的数据
select * from tb
where patindex('%.%.%.%',id)=0 and patindex('%.%.%',id)>0 ,依此类推,
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
763
import
I
I
回复
0
查看
843
import
I
后退
顶部