Форматирование иерархических отчетов с помощью LEVEL и LPAD

Создайте отчет, содержащий уровни управления компанией, начиная с наивысшего уровня и добавляя отступ для каждого из следующих уровней.

13-11-8577927

Номера уровней узлам дерева назначаются начиная от корня. Чтобы вывести иерархический отчет в виде дерева с отступами, используйте функцию LPAD вместе с псевдостолбцом LEVEL. Элементы синтаксиса в примере на рисунке:

  • LPAD(char1,n [,char2]) возвращает char1, с заполнением слева до позиции n последовательностью символов, определенных в char2. Аргумент n является общей длиной возвращаемого значения для отображения на экране терминала.

  • LPAD(last_name, LENGTH(last_name)+(LEVEL*2)-2,'_') определяет формат отображения.

  • char1 – это фамилия (LAST_NAME), общая длина возвращаемого значения n – это длина LAST_NAME +(LEVEL*2)-2, а char2 – это ‘_’.

Этот оператор сообщает SQL, что нужно взять значение LAST_NAME и дополнить его слева символами ‘_’, пока длина результирующей строки не станет равна значению, определенному выражением LENGTH(last_name)+(LEVEL*2)-2.

Для King LEVEL = 1. Следовательно, (2 * 1) – 2 = 2 – 2 = 0. Поэтому перед фамилией King символы ‘_’ не используются, и эта фамилия появляется в столбце 1.

Для Kochhar LEVEL = 2. Следовательно, (2 * 2) – 2 = 4 – 2 = 2. Поэтому перед фамилией Kochhar вставляется два символа ‘_’, и перед ней появляется отступ.

Оставшиеся записи таблицы EMPLOYEES выводятся аналогично.

13-11-2-9786928

Далее: Сохранение инструкций SQL

Похожие записи