SQL*Plus break与compute的简单用法

php中文网
发布: 2016-06-07 17:28:31
原创
1771人浏览过

在SQL*Plus提示符下输出求和报表,我们可以借助break与compute两个命令来实现。这个两个命令简单易用,可满足日常需求,其实质也

在sql*plus提示符下输出求和报表,我们可以借助break与compute两个命令来实现。这个两个命令简单易用,可满足日常需求,其实质也相当于在编写sql语句时使用分组及聚合函数。不同的是在报表中的分组的最下方或整个报表的最下方我们可以得到如sum,avg以及自定义的聚合字样。见下面的演示。

1、break的用法

a、获取帮助信息
--如果帮助不可用,需要安装SQL*Plus help,参考: SQL*PLus 帮助手册(SP2-0171)
goex_admin@SYBO2SZ> help break

 BREAK
 -----

 Specifies where changes occur in a report and the formatting
 action to perform, such as:
 - suppressing display of duplicate values for a given column
 - skipping a line each time a given column value changes
  (In iSQL*Plus, only when Preformatted Output is ON)
 - printing computed figures each time a given column value
  changes or at the end of the report.
 Enter BREAK with no clauses to list the current BREAK definition.

 BRE[AK] [ON report_element [action [action]]] ...

 where report_element has the following syntax:
    {column | expression | ROW | REPORT}

 and where action has the following syntax:
    [SKI[P] n | [SKI[P]] PAGE] [NODUP[LICATES] | DUP[LICATES]]

 The SKIP option is not supported in iSQL*Plus

燕雀Logo
燕雀Logo

为用户提供LOGO免费设计在线生成服务

燕雀Logo 101
查看详情 燕雀Logo

b、命令特性描述
break 命令主要用于过滤重复列,正如单词所表达的意思及中断,也就是说中断显示重复的列。
当下一行记录的上指定的列与上一行相同,不显示该列,否则显示该列。
当使用break时,通常建议sql语句使用Order by 子句。可以基于order by子句使用多个列,同样break 也可以使用多个列。
report_element表明可以基于列,表达式,行,以及report等多种不同类型来进行中断显示,也就是说break on对哪个进行分组。
action则表示
    skip[n],在每个分组的最后,自动跳过n个空行。
    skip page, 在每个分组的最后,自动换页。
    break on row skip[n],每一行后面跳过n个空行。
    nodup 重复的显示空,dup重复的也显示。

c、演示break用法
--基于列deptno进行中断显示
goex_admin@SYBO2SZ> break on deptno
goex_admin@SYBO2SZ> break    --break用于查看当前break的设置信息
break on deptno nodup

--下面查询中,deptno列被中断显示
goex_admin@SYBO2SZ> select * from emp order by deptno;

    EMPNO ENAME      JOB              MGR HIREDATE                SAL      COMM    DEPTNO
---------- ---------- --------- ---------- ----------------- ---------- ---------- ----------
      7782 CLARK      MANAGER        7839 19810609 00:00:00      2550                    10
      7839 KING      PRESIDENT            19811117 00:00:00      5100
      7934 MILLER    CLERK          7782 19820123 00:00:00      1400
      7566 JONES      MANAGER        7839 19810402 00:00:00      3075                    20
      7902 FORD      ANALYST        7566 19811203 00:00:00      3100
      7876 ADAMS      CLERK          7788 19870523 00:00:00      1200
      7369 SMITH      CLERK          7902 19801217 00:00:00        900
      7788 SCOTT      ANALYST        7566 19870419 00:00:00      3100
      7521 WARD      SALESMAN        7698 19810222 00:00:00      1350        500        30
      7844 TURNER    SALESMAN        7698 19810908 00:00:00      1600          0
      7499 ALLEN      SALESMAN        7698 19810220 00:00:00      1700        300
      7900 JAMES      CLERK          7698 19811203 00:00:00      1050
      7698 BLAKE      MANAGER        7839 19810501 00:00:00      2950
      7654 MARTIN    SALESMAN        7698 19810928 00:00:00      1350      1400

14 rows selected.

--指定skip参数为n,则每一个新的分组之后插入指定的行数,如下面的查询为1,则新分组后插入1空行
goex_admin@SYBO2SZ> break on deptno skip 1
goex_admin@SYBO2SZ> break
break on deptno skip 1 nodup

goex_admin@SYBO2SZ> select * from emp order by deptno;

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号