2010-06-10 28 views

回答

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能夠計算下一行(將在當前行後面出現的行)的表達式並將該值返回給當前行。 LEAD的一般語法如下:

LEAD(sql_expr,膠印,默認值)OVER(analytic_clause)

  1. sql_expr是從前導行來計算表達式。
  2. offset是前導行相對於當前行的索引。偏移量是一個正整數,默認值爲1.
  3. 默認值是要返回的值,如果偏移指向分區範圍之外的行。