Отступ и форматирование кода SQL в Oracle SQL Developer

#oracle-sqldeveloper

#oracle-sqldeveloper

Вопрос:

Я пытаюсь выяснить, есть ли способ сделать отступ в коде следующим образом:

 SELECT e.employee_id,
        COUNT(DISTINCT e.departmetn_id) 
        OVER (PARTITION BY e.manager_id)
  FROM employees e
 WHERE e.employee_id in (100, 110, 150)
   AND e.department_id = 50
    OR e.employee_id not in (100, 110, 150)
 ORDER BY e.employee_id
  

У меня была бы легкая жизнь, если бы я мог иметь столбец пробелов между моими select, from и where (например, правое поле) и остальной частью инструкции. Для меня это кажется более понятным. Я на самом деле пытаюсь сCtrl F7, но результат для меня не такой привлекательный:

 SELECT e.employee_id,
        COUNT (DISTINCT
              e.departmetn_id
       ) OVER (PARTITION BY
              e.manager_id
       )
FROM employees e
WHERE
              e.employee_id IN (
                     100,110,150
              )
       AND
              e.department_id = 50
       OR
              e.employee_id NOT IN (
                     100,110,150
              )
ORDER BY e.employee_id;
  

Я надеюсь быть максимально понятным. Если Ctrl F7 способ является стандартным, я просто попытаюсь привыкнуть к нему.

Хорошего дня!

Ответ №1:

ДА.

Я взял ваш код — и отформатировал, используя опцию выравнивания ключевых слов по правому краю.

Перед —

введите описание изображения здесь

После — с указанием предпочтений (вам нужна последняя версия, мы добавили это когда-нибудь на временной шкале версии 18.x)

введите описание изображения здесь

Или вот форматированный текст

 SELECT e.employee_id,
       COUNT(DISTINCT e.departmetn_id) OVER(
              PARTITION BY e.manager_id
       )
  FROM employees e
 WHERE e.employee_id IN (
       100,
       110,
       150
)
   AND e.department_id = 50
    OR e.employee_id NOT IN (
       100,
       110,
       150
)
 ORDER BY e.employee_id;
  

Мы сохраняем выравнивание ключевых слов по первому ключевому слову, поэтому в ЗАКАЗЕ или ГРУППЕ используется ‘ORDER’, а не ‘BY’.