对树型结构表的遍历
职位,部门,政府收支科目等等很多都存在父子关系,在数据存储上我们会利用id与pid的关系来确定,但是在展现上可能就需要借助start with ... connect by来实现了。现在有这样一个表test_treeSQL> desc test_tree;Name Type Nullable Default Comments ----- ------------- -------- ------- -------- ID VARCHAR2(10) Y 代码 NAME VARCHAR2(100) Y 名称 PID VARCHAR2(10) Y 父级代码 LEAF VARCHAR2(3) Y '1' 是否叶子 GLASS VARCHAR2(3) Y
动态生成日期
1、动态生成一年中的日期select to_date('2007-01-01','yyyy-mm-dd')+(rownum-1) 日期 from dual Connect By rownum<=to_char(to_date('20071231', 'yyyymmdd'), 'ddd');注意,上面的语句在10g以上版本可以全部显示,对于92只能显示100条。不过可以利用一个记录数超过366的表来实现。select to_date('2007-01-01','yyyy-mm-dd')+(rownum-1) 日期 from user_objects where rownum<=to_char(to_date('20071231', 'yyyymmdd'), 'ddd');2、动态生成一年中季度与月份的对应Select to_char(日期,'q') 季度,to_char(日期,'yyyy-mm') 年月 f
start with ... connect by 的理解
对于使用sys_connect_by_path函数来得到树型结构信息的平铺,但是使用过程中发现,有很多实现了但是查出来的数据不对。如:select deptno,ltrim(sys_connect_by_path(ename,','),',') path from (select deptno,ename,row_number() over (order by deptno) node_id,row_number() over (partition by deptno order by deptno) rn from emp)start with rn=1connect by node_id- 1 = prior node_id1 10 CLARK2 10 CLARK,KING3 10 CLARK,KING,MILLER4 20 CLARK,KING,MILLER,SMITH5 20 CLARK,KING,MILLER,SMITH,ADAMS6 20 CLARK,KING,MILLER,SM