2010-06-10 2 views
0

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

ответ

1
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; 

Вот если вы получите весь статус «OK», то значение в увеличивающихся порядке, иначе есть некоторый декремент.

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

Свинец (sql_expr, смещение, по умолчанию) НАД (analytic_clause)

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