技術的にはツリー構造のデータを含むデータ テーブルがありますが、ツリーはコードとこのコードの長さによって定義されます。
商品コード表は、コードと説明で構成されています。
例えば:
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