我有一个数据表,其中包含技术上是树结构的数据,但是树是由代码和该代码的长度定义的。
商品代码表由代码和描述组成:
例如:
Code Description
------ -------------
0101 Live Animals
01011 Horses
010110 Purebred
010190 Other
一个项目的等级是通过计算它下面的代码来计算的。它下面的代码必须包含在当前代码中。如果那有意义的话。
所以在上面的例子中:
0101 is level 0 (nothing is contained in it)
01011 is level 1 (0101 is contained in it)
010110 is level 2 (0101 and 01011 is contained in it)
010190 is level 1 (only 0101 is contained in it)
有没有办法在 SQL 中获得这些级别?我正在使用 DB2。
编辑: 尼古拉和戈登的解决方案都运作良好,虽然我认为尼古拉的稍微快一点!谢谢你们!
必须对 DB2 进行一些编辑:
select
t1.code, count(t2.code)
from commoditycode t1
left join commoditycode t2
on substr(t1.code, 1, length(t1.code) - 1) like concat(t2.code, '%')
group by t1.code