CREATE view [dbo].[view_all_module] as
with cte as
(
select s.modulecode,s.parentmodulecode,s.modulename,lvl=0 from sysmodule s where parentModuleCode = '-1'
union all
select s.modulecode,s.parentmodulecode,s.modulename,lvl=c.lvl+1 from sysmodule s join cte c on s.parentmodulecode = c.modulecode
)
select * from cte
with 这个关键字以前没有用过,搜了一下也没有什么介绍,哪位大大帮我转换成oracle视图,先谢了!
--Oracle--2、然后建立测试表和数据。
drop table t_dept_temp; create table t_dept_temp( DEPT_ID NUMBER(2) NOT NULL, PARENT_ID NUMBER(2) , DEPT_NAME VARCHAR2(10) , AMOUNT NUMBER(3) --人数 ); delete t_dept_temp; insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (1,null,'1' ,2); insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (2,1 ,'1-2' ,15); insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (3,1 ,'1-3' ,8); insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (4,2 ,'1-2-4',10); insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (5,2 ,'1-2-5',9); insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (6,3 ,'1-3-6',17); insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (7,3 ,'1-3-7',5); insert into t_dept_temp (DEPT_ID,PARENT_ID,DEPT_NAME,AMOUNT) values (8,3 ,'1-3-8',6); commit; SQL> select * from t_dept_temp; DEPT_ID PARENT_ID DEPT_NAME AMOUNT ------- --------- ---------- ------ 1 1 2 2 1 1-2 15 3 1 1-3 8 4 2 1-2-4 10 5 2 1-2-5 9 6 3 1-3-6 17 7 3 1-3-7 5 8 3 1-3-8 6 3、调整一下输出格式 col DEPT_ID format A10; 二、接下来实现各种查询要求 1、部门2及其所有下级部门。 SELECT LPAD(' ',2*(LEVEL - 1), ' ')||DEPT_ID AS DEPT_ID, PARENT_ID,DEPT_NAME,AMOUNT FROM t_dept_temp CONNECT BY PARENT_ID = PRIOR DEPT_ID -- 找出所有PARENT_ID等于当前记录DEPT_ID的记录。 START WITH DEPT_ID = 2 -- 从部门2开始递归查询。 ; DEPT_ID PARENT_ID DEPT_NAME AMOUNT ---------- --------- ---------- ------ 2 1 1-2 15 4 2 1-2-4 10 5 2 1-2-5 9 2、部门4及其所有上级部门 SELECT LPAD(' ',2*(LEVEL - 1), ' ')||DEPT_ID AS DEPT_ID, PARENT_ID,DEPT_NAME,AMOUNT FROM T_DEPT_TEMP CONNECT BY PRIOR PARENT_ID = DEPT_ID -- 找出所有DEPT_ID等于当前记录PARENT_ID的记录 START WITH DEPT_ID = 4 -- 从部门4开始递归查询。 ; DEPT_ID PARENT_ID DEPT_NAME AMOUNT ---------- --------- ---------- ------ 4 2 1-2-4 10 2 1 1-2 15 1 1 2