忙烦大侠们解释一下sql语句的意思 ,好了绝对给分(50)

hsj20041004 2005-01-26 02:59:11
SELECT COUNT(*),SUM(ITEM01)/COUNT(*),SUM(ITEM01)
FROM V_GZGL_PERSON A,(SELECT ITEMID FROM DT_ZZGL_UNIT
START WITH ITEMID='408130000000004' CONNECT BY FITEMID=PRIOR ITEMID) B
WHERE DWID =ITEMID
...全文
61 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
luxuezhu 2005-01-26
  • 打赏
  • 举报
回复
包子可以把你学习的东东给我发一份
luxuezhu@126.com
fuxia 2005-01-26
  • 打赏
  • 举报
回复
mark
baojianjun 2005-01-26
  • 打赏
  • 举报
回复
§7.3.1 排除单一体和分枝
例1:在ORACLE的EMP 表中,每一条记录都有一个唯一标识当前雇员的empno和标识这个雇员的经理的mgr列。如果mgr 为空,则该雇员是该机构的最顶级。现在要列出每个雇员的层次结构(从顶到底):

select lpad(' ',4*(level-1))||ename name ,empno,mgr from emp
start with mgr is null
connect by prior empno=mgr;

NAME EMPNO MGR
-------------------- --------- ---------
KING 7839
JONES 7566 7839
SCOTT 7788 7566
ADAMS 7876 7788
FORD 7902 7566
SMITH 7369 7902
BLAKE 7698 7839
ALLEN 7499 7698
WARD 7521 7698
MARTIN 7654 7698
TURNER 7844 7698
JAMES 7900 7698
CLARK 7782 7839
MILLER 7934 7782

14 rows selected.

SQL>

从查询结果中可以看出,由于JONES、BLAKE、CLARK的上司是KING,所以JONES等MGR(经理编号)=KING的empno号,即KING的直接下级是JONES、BLAKE、CLARK,因为他们的MGR与KING的EMPNO一样。

§7.3.2 遍历至根
例2:现在要从某个雇员往他的上级列出该雇员的层次结构(从顶到底):
SQL> col ename for a30
SQL> l
select lpad(' ',4*(level-1))||ename ename,mgr,empno from emp
start with mgr=7788
connect by prior mgr= empno
SQL> /

ENAME MGR EMPNO
------------------------------ ----- ---------
ADAMS 7788 7876
SCOTT 7566 7788
JONES 7839 7566
KING 7839


例3:现在要列出所有雇员的层次结构(从顶到底):

select lpad(' ',4*(level-1))||ename name ,empno,mgr from emp
start with mgr is not null
connect by empno=prior mgr


NAME EMPNO MGR
-------------------- --------- -----
SMITH 7369 7902
FORD 7902 7566
JONES 7566 7839
KING 7839
ALLEN 7499 7698
BLAKE 7698 7839
KING 7839
WARD 7521 7698
BLAKE 7698 7839
KING 7839
JONES 7566 7839
KING 7839
MARTIN 7654 7698
BLAKE 7698 7839
KING 7839
BLAKE 7698 7839
KING 7839
CLARK 7782 7839
KING 7839
SCOTT 7788 7566
JONES 7566 7839
KING 7839
TURNER 7844 7698
BLAKE 7698 7839
KING 7839
ADAMS 7876 7788
SCOTT 7788 7566
JONES 7566 7839
KING 7839
JAMES 7900 7698
BLAKE 7698 7839
KING 7839
FORD 7902 7566
JONES 7566 7839
KING 7839
MILLER 7934 7782
CLARK 7782 7839
KING 7839

38 rows selected.
baojianjun 2005-01-26
  • 打赏
  • 举报
回复
ORACLE 提供了一个有趣的功能 connect by 子句,它可以对具有家族树结构的分枝进行排序。它的用途有 机构或公司的各层结构,财务的科目代码等。
要使用查询遍历,需要在将数据在基表中按照层次结构进行存储。比如一个组织机构就是这样的典型例子。

实现语句:

SELECT column
FROM table_name
START WITH column=value
CONNECT BY PRIOR 父主键=子外键
baojianjun 2005-01-26
  • 打赏
  • 举报
回复
層次查詢,start with ... connect by ....

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧