row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的).

ROW_NUMBER() 就是生成一个顺序的行号,而他生成顺序的标准,就是后面紧跟的OVER(ORDER BY ReportID)

nvl(expr1,expr2)
当第一个参数不为空时取第一个值,当第一个值为NULL时,取第二个参数的值。
select nvl(1,2) from dual;
  nvl
    1
select nvl(null,2) from dual;
  nvl
    2
nvl2(expr1,expr2,expr3)
当第个参数不为NULL,取第二个参数的值,当第一个能数为NULL,第二个参数为不空NULL,取第三个数的值,当第一,二个参数都为NULL时,取第三个值
SQL> select nvl2(1,2,3) from dual;
NVL2(1,2,3)
-----------
          2
SQL> select nvl2(null,2,3) from dual;
NVL2(NULL,2,3)
--------------
            3
NULLIF(expr1,expr2)/*比对两个值是否一样,一样就反回为空,否则不会为空*/
当第一个参数和第二个参数相同时,反回为空,当第一个参数和第二个数不同时,返回第一个参数值,第一个参数值不允许为null
coalesceexpr1,expr2........)/取第一个不为空的值*/
SQL> select coalesce(1,2,3,4) from dual;
COALESCE(1,2,3,4)
-----------------
                1
SQL> select coalesce(null,2,3,4) from dual;
COALESCE(NULL,2,3,4)
--------------------
                  2
SQL> select coalesce(null,null,3,4) from dual;
COALESCE(NULL,NULL,3,4)
-----------------------
                      3
SQL> select coalesce(null,null,null,4) from dual;
COALESCE(NULL,NULL,NULL,4)