Создайте функцию Oracle, проверив значение приращения - PullRequest
0 голосов
/ 10 июня 2010

Как проверить в Oracle Function, увеличивается ли значение в конкретном поле за последние 3 года или нет.Предположим, что одна таблица - это компания, и если мы хотим учитывать только значения, если прибыль за последние 3 года компании увеличивается.

1 Ответ

1 голос
/ 10 июня 2010
SELECT empno, sal,
LEAD(sal, 1, 0) OVER (PARTITION BY dept ORDER BY id) NEXT_SAL,
CASE WHEN sal <= LEAD(sal, 1, MAX(SAL)) OVER (PARTITION BY dept ORDER BY sal) 
     THEN 'OK'
     ELSE 'NOT OK'
END STATUS
FROM emp
ORDER BY deptno, sal DESC;

Здесь, если вы получаете все состояния как «ОК», тогда значение находится в порядке увеличения, в противном случае есть некоторое уменьшение.

LEAD имеет возможность вычислить выражениев следующих строках (строки, которые идут после текущей строки) и возвращают значение в текущую строку.Общий синтаксис LEAD показан ниже:

LEAD (sql_expr, offset, default) OVER (analytic_clause)

  1. sql_expr - это выражение для вычисления изначальная строка.
  2. смещение - это индекс начальной строки относительно текущей строки.смещение является положительным целым числом со значением по умолчанию 1.
  3. default - это значение, которое возвращается, если смещение указывает на строку вне диапазона разделения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...