LEVEL Pseudocolumn in Hierarchical Queries

June 30, 2010

in Pseudocolumns, SQL

LEVEL Pseudocolumn in Hierarchical Queries

LEVEL is a pseudocolumn (i.e. not a real column in the database but available in a query), which has a special function in hierarchical queries – it returns the position of any row in the hierarchy.

Consider the hierarchy of employees in SCOTT’s EMP table, shown in tree structure like below:

Hierarchical Query

The topmost node (root node) is Level 1, the next below is 2, and so on.

This value can be retrieved via a queries of this form:

SQL> -- level displayed for each row
SQL> select empno, ename
  2       , level
  3  from emp
  4  start with ename = 'JONES'
  5  connect by prior empno = mgr
  6  /

     EMPNO ENAME        LEVEL
---------- ------- ----------
      7566 JONES            1
      7788 SCOTT            2
      7876 ADAMS            3
      7902 FORD             2
      7369 SMITH            3

SQL> break on level skip 1

SQL> -- level+hierarchy path displayed for each row
SQL> select empno, ename
  2       , level
  3       , sys_connect_by_path(ename, ' -> ') path
  4  from emp
  5  start with ename = 'JONES'
  6  connect by prior empno = mgr
  7  order by level
  8  /

     EMPNO ENAME   LEVEL PATH
---------- ------- ----- -----------------------
      7566 JONES       1  -> JONES

      7902 FORD        2  -> JONES -> FORD
      7788 SCOTT          -> JONES -> SCOTT

      7369 SMITH       3  -> JONES -> FORD -> SMITH
      7876 ADAMS          -> JONES -> SCOTT -> ADAMS

Photo by extranoise

Leave a Comment

Previous post:

Next post: