Oracle PL/SQL BREAK-ON排列实例

使用BREAK ON语句进行排列的实例

BREAK ON语法

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

    • report_element的语法为{column|expr|ROW|REPORT}

    • action的语法为[SKI[P] n|[SKI[P]] PAGE][NODUP[LICATES]|DUP[LICATES]]

  2. 指定报告中发生更改的位置以及要执行的格式化操作,比如:

    • 抑制显示给定列的重复值。
    • 每次给定列值更改时跳过一行。
    • 每次给定列值发生变化或在报告结束时打印计算的数字。
  3. 不带参数直接输入BREAK来查看当前的BREAK定义。

  4. 此语句经常和Compute命令配合使用。

英文原文

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

where report_element has the syntax {column|expr|ROW|REPORT}

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

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

  • printing computed figures each time a given column value changes or at the end of the report.

See the COMPUTE command.

Enter BREAK with no clauses to list the current BREAK definition.

命令参数

语句 含义
clear breaks 清除所有的break定义
break on column 在该列上中断
break on row 在每一行上中断
break on Page 在每一页上中断
break on report 在每一报告上中断
skip n 跳过n行
skip page 跳过未用完的页

实例

题目

基于Oracle 11g下hr用户进行计算。

显示所有部门的部门编号、名称、员工数和平均薪金,同时显示在每个部门中工作的员工的姓名、薪金和职务。

答题

  • 指定break参数

    1
    break on department_id on department_name on num on avg skip 1
  • 进行查询

    1
    2
    3
    4
    5
    6
    7
    8
    9
    select d.department_id,d.department_name,
    count(e1.employee_id) num,
    nvl(to_char(avg(e1.salary),'999999.99'),'Null') avg,
    e2.last_name,e2.salary,e2.job_id
    from departments d,employees e1,employees e2
    where d.department_id=e1.department_id(+)
    and d.department_id=e2.department_id(+)
    group by d.department_id,d.department_name,e2.last_name,e2.salary,e2.job_id
    order by d.department_id,num;
  • 清除break定义

    1
    clear breaks

部分结果

您的支持将是对我最好的鼓励!