我有一个表的结构为:
DPTNO,DPTNM, PDPTN
0000 公司名称 NULL
A A部门 0000
B B部门 0000
AZ A科室 A
AA AA班 AZ
AB AB班 AZ
AC AC班 AZ
BZ B科室 B
BA BA班 BZ
BB BB班 BZ
要增加一个按级别的内容
结果为:
DPTNO,DPTNM, PDPTN,LEVEL01
0000 公司名称 NULL 0
A A部门 0000 1
B B部门 0000 1
AZ A科室 A .2
AA AA班 AZ ..3
AB AB班 AZ ..3
AC AC班 AZ ..3
BZ B科室 B .2
BA BA班 BZ ..3
BB BB班 BZ ..3
这个如何实现??
在线等
DPTNO,DPTNM, PDPTN
0000 公司名称 NULL
A A部门 0000
B B部门 0000
AZ A科室 A
AA AA班 AZ
AB AB班 AZ
AC AC班 AZ
BZ B科室 B
BA BA班 BZ
BB BB班 BZ
要增加一个按级别的内容
结果为:
DPTNO,DPTNM, PDPTN,LEVEL01
0000 公司名称 NULL 0
A A部门 0000 1
B B部门 0000 1
AZ A科室 A .2
AA AA班 AZ ..3
AB AB班 AZ ..3
AC AC班 AZ ..3
BZ B科室 B .2
BA BA班 BZ ..3
BB BB班 BZ ..3
这个如何实现??
在线等
比如说 0000 代表公司名称那么它的级别最高位0;A/B代表部门她的级别在0000之下,则LEVEL01 为1,而 科室在部门的下边,则它的级别为 2 一下同理
2 lpad(' ',level-1,'.')||(level-1) as lev
3 from (select '0000' as dptno,'公司名称' as dptnm,NULL as pdptn from dual
4 union all
5 select 'A' as dptno,'A部门' as dptnm,'0000' as pdptn from dual
6 union all
7 select 'B' as dptno,'B部门' as dptnm,'0000' as pdptn from dual
8 union all
9 select 'AZ' as dptno,'A科室' as dptnm,'A' as pdptn from dual
10 union all
11 select 'AA' as dptno,'AA班' as dptnm,'AZ' as pdptn from dual
12 union all
13 select 'AB' as dptno,'AB班' as dptnm,'AZ' as pdptn from dual
14 union all
15 select 'AC' as dptno,'AC班' as dptnm,'AZ' as pdptn from dual
16 union all
17 select 'BZ' as dptno,'B科室' as dptnm,'B' as pdptn from dual
18 union all
19 select 'BA' as dptno,'BA班' as dptnm,'BZ' as pdptn from dual
20 union all
21 select 'BB' as dptno,'BB班' as dptnm,'BZ' as pdptn from dual
22 )tt
23 start with tt.dptno = '0000'
24 connect by prior tt.dptno = tt.pdptn
25 order by tt.pdptn;DPTNO DPTNM PDPTN LEV
----- ---------------- ----- --------------------------------------------------------------------------------
A A部门 0000 1
B B部门 0000 1
AZ A科室 A . 2
AA AA班 AZ .. 3
AC AC班 AZ .. 3
AB AB班 AZ .. 3
BZ B科室 B . 2
BA BA班 BZ .. 3
BB BB班 BZ .. 3
0000 公司名称 010 rows selected