文档详情

oracle高级查询.doc

发布:2018-04-26约5.35千字共6页下载文档
文本预览下载声明
高级查询: select * from more_employees t start with t.employee_id = 1 connect by prior t.employee_id = t.manager_id EMPLOYEE_ID MANAGER_ID FIRST_NAME LAST_NAME TITLE SALARY 1 1 James Smith CEO 3.254E+10 2 2 1 James1 Smith1 CEO1 3.254E+10 3 3 2 James2 Smith2 CEO2 3.254E+10 4 5 2 James4 Smith4 CEO4 3.254E+10 5 4 1 James3 Smith3 CEO3 3.254E+10 6 6 4 James5 Smith5 CEO5 3.254E+10 7 9 6 James8 Smith8 CEO8 3.254E+10 8 7 4 James6 Smith6 CEO6 3.254E+10 9 8 7 James7 Smith7 CEO7 3.254E+10 10 10 1 James9 Smith9 CEO9 3.254E+10 说明: 定义employee_id=1表示查询从员工1 开始。Prior_condition表示子节点manager_id指向父节点employee_id.查询条件是:从employee_id=1开始检索。第二条记录,先从子节点manager_id=1的开始,依靠临近原则,前根遍历,第三条记录,从子节点manager_id=2(即最靠近它的父节点employee_id=2)开始,依次类推。 select level,t.* from more_employees t start with t.employee_id = 1 connect by prior t.employee_id = t.manager_id LEVEL EMPLOYEE_ID MANAGER_ID FIRST_NAME LAST_NAME TITLE SALARY 1 1 James Smith CEO 3.254E+10 2 2 1 James1 Smith1 CEO1 3.254E+10 3 3 2 James2 Smith2 CEO2 3.254E+10 3 5 2 James4 Smith4 CEO4 3.254E+10 2 4 1 James3 Smith3 CEO3 3.254E+10 3 6 4 James5 Smith5 CEO5 3.254E+10 4 9 6 James8 Smith8 CEO8 3.254E+10 3 7 4 James6 Smith6 CEO6 3.254E+10 4 8 7 James7 Smith7 CEO7 3.254E+10 2 10 1 James9 Smith9 CEO9 3.254E+10 select level, lpad( , 2 * level - 1) || t.first_name || || t.last_name from more_employees t start with t.employee_id = 1 connect by prior t.employee_id = t.manager_id LEVEL LPAD(,2*LEVEL-1)||T.FIRST_NA 1 James Smith 2 James1 Smith1 3 James2 Smith2 3 James4 Smith4 2 James3 Smith3 3 James5 Smith5 4 James8 Smith8 3 James6 Smith6 4 James7 Smith7 2 James9 Smith9 格式化层次化查询结果。 扩展的group by 子句: Rollup :是group by 子句的一种扩展,可以为每个分组返回小记记录,以及所有记录的总计记录。 如果是GROUP BY CUBE(A, B, C),则首先会对(A、B、C)进行GROUP BY,然后依次是(A、B),(A、C),(A),(B、C),(B),(C),最后对全表进行GROUP BY操作 select t.id,sum(t.div) from emp t group by rollup(t.id) ID SUM(T.DIV) 1 1 1 2 2 5 3 3 4 4 10 select t.id,
显示全部
相似文档