我在做BI的时候,建立维度表的时候碰上这样一种情况:
pk code name
1 01 1
2 02 2
3 0101 3
4 0102 4
5 0201 5
要求查询完成后的表结构是:
pk code_lvl1 name_lvl1 code_lvl2 name_lvl2
1 01 1 0101 3
2 01 1 0102 4
3 02 2 0201 5
注:所以字段都按字符串处理就行
pk code name
1 01 1
2 02 2
3 0101 3
4 0102 4
5 0201 5
要求查询完成后的表结构是:
pk code_lvl1 name_lvl1 code_lvl2 name_lvl2
1 01 1 0101 3
2 01 1 0102 4
3 02 2 0201 5
注:所以字段都按字符串处理就行
如果下面还有第三、第四……怎么办?
注:每层的CODE用2位数字表示,十位补0
from table_name aa,table_name bb
where instr(bb.code,aa.code) = 1 and length(bb.code) > length(aa.code)
1 1 01 1
2 2 02 2
3 3 0101 3
4 4 0102 4
5 5 0201 5
select a.pk,a.code,a.name,b.pk,b.code,b.name
from
(select pk,code,name from test_t where length(code)=2) a,
(select pk,code,name,substr(code,1,2) pcode from test_t where length(code)=4) b
where a.code=b.pcode;1 1 01 1 3 0101 3
2 1 01 1 4 0102 4
3 2 02 2 5 0201 5