Welcome 微信登录

首页 / 数据库 / MySQL / Oracle PL/SQL之GROUPING 函数

在使用ROLLUP或CUBE进行GROUP操作时会产生内容为空的字段,即值为NULL的字段,那我们如何区分这些显示为空的字段到底是该字段本身值就是NULL还是由ROLLUP和CUBE生成的呢?这时可以用GROUPING(groupingfield) 来解决,返回0表示该字段本身值就是NULL,返回1则表示是由ROLLUP或CUBE生成的。 eg:
  1. SELECT   department_id deptid, job_id job, SUM (salary),  
  2.          GROUPING (department_id) grp_dept, GROUPING (job_id) grp_job  
  3.     FROM employees  
  4.    WHERE department_id < 50  
  5. GROUP BY ROLLUP (department_id, job_id);  
  6.   
  7.   
  8.     DEPTID JOB        SUM(SALARY)   GRP_DEPT    GRP_JOB  
  9. ---------- ---------- ----------- ---------- ----------  
  10.         10 AD_ASST           4400          0          0  
  11.         10                   4400          0          1  
  12.         20 MK_MAN           13000          0          0  
  13.         20 MK_REP            6000          0          0  
  14.         20                  19000          0          1  
  15.         30 PU_MAN           11000          0          0  
  16.         30 PU_CLERK         13900          0          0  
  17.         30                  24900          0          1  
  18.         40 HR_REP            6500          0          0  
  19.         40                   6500          0          1  
  20.                             54800          1          1  
  21.   
  22. 11 rows selected.  
Oracle PL/SQL之GROUP BY CUBEOracle PL/SQL之GROUP BY GROUPING SETS相关资讯      Oracle教程 
  • Oracle中纯数字的varchar2类型和  (07/29/2015 07:20:43)
  • Oracle教程:Oracle中查看DBLink密  (07/29/2015 07:16:55)
  • [Oracle] SQL*Loader 详细使用教程  (08/11/2013 21:30:36)
  • Oracle教程:Oracle中kill死锁进程  (07/29/2015 07:18:28)
  • Oracle教程:ORA-25153 临时表空间  (07/29/2015 07:13:37)
  • Oracle教程之管理安全和资源  (04/08/2013 11:39:32)
本文评论 查看全部评论 (0)
表情: 姓名: 字数