与表关联进行行转列
目前有这一需求
表 t_temp_01
f_categoryid f_categoryname f_parentid f_level
0 root -1 0
1 结点 0 1
2 子结点 1 2
表 t_temp_02
f_id f_name f_categoryid(与表 t_temp_01关联)
10 测试 2
11 名字 1
如何把这二张表显示成
f_id f_name f_categoryname1 f_categoryname2 f_categoryname3
10 测试 子结点 结点 root
11 名字 结点 root
SELECT * FROM (
SELECT f_categoryname,f_level
FROM t_temp_01
START WITH f_level<9 CONNECT BY PRIOR F_CATEGORYID = F_PARENTID ) t
PIVOT(MAX(f_categoryname) FOR f_level IN (0 p1,1 p2,2 p3));
这样好像只能把 t_temp_01 这张表进行行转列,
但与 t_temp_02 进行关联后就无法实现了。
------解决方案--------------------with t as
(select t2.f_id, t2.f_name, t1.lev, t1.f_categoryname
from (select CONNECT_BY_ROOT(t1.f_categoryid) root,
(t1.f_level - 3) * -1 lev,
t1.f_categoryname
from t_temp_01 t1
connect by t1.f_categoryid = prior t1.f_parentid) t1,
t_temp_02 t2
where t1.root = t2.f_categoryid)
select *
from&nb