【问题标题】:SQL*Plus Custom Summary ReportSQL*Plus 自定义摘要报告
【发布时间】:2020-07-23 05:18:08
【问题描述】:

我需要生成如下摘要报告:

我的问题是,

  1. 我不知道如何在此自定义报告中填写计数数据。
  2. 我不知道如何将它放在文本文档中的上述表格视图中。它不是 HTML。

到目前为止,我只知道如何做第一行,没有表格视图的列。

这是我的代码。

SET HEADING OFF;
SET LINESIZE 200;
SET SPACE 0; 
SET ECHO OFF;
SET FEEDBACK OFF;
SET VERIFY OFF;
SET MARKUP HTML OFF SPOOL OFF;
SET TERMOUT OFF; --Do not show output to the screen.
SET NEWPAGE NONE; --Remove the first blank line at the top of the page and between queries.

TTITLE LEFT "REPORT NAME" RIGHT "PAGE : " SQL.PNO SKIP 1 -
LEFT        "--------------------------------" RIGHT "DATE : " _DATE SKIP 1 -
LEFT "A) TOTAL RECORDS " RIGHT total_records; -- Cannot output variable in the title.
LEFT "B) MATCHED RECORDS " RIGHT matched_records; -- Cannot output variable in the title.
LEFT "C) UNMATCHED RECORDS " RIGHT matched_records; -- Cannot output variable in the title.
BTITLE LEFT "E N D";

total_records 是一个插入语句。

SELECT COUNT(*) INTO total_records FROM TABLE;

我没有做过匹配记录和不匹配记录。但我能想到的唯一方法

  1. 选择一条语句到游标中。
  2. 循环进入光标。
  3. 当有匹配时增加匹配计数。
  4. 一次循环结束。不匹配计数 = 总计数 - 匹配计数。

我认为这不是最有效的方法。但是,如果您有更好的方法,请告诉我。

【问题讨论】:

    标签: oracle report sqlplus spool


    【解决方案1】:

    这样的事情会响铃吗?示例基于 Scott 的示例模式:

    SQL> select 'Total records' name, count(*) cnt
      2    from emp
      3  union all
      4  select 'Matched count', sum(case when deptno = 10 then 1 else 0 end)
      5    from emp
      6  union all
      7  select 'Unmatched count', sum(case when deptno = 10 then 0 else 1 end)
      8    from emp;
    
    NAME                   CNT
    --------------- ----------
    Total records           14
    Matched count            3
    Unmatched count         11
    
    SQL>
    

    【讨论】:

    • 哦!哇!!是的!!然后我只需要相应地调整列空间。但是表格视图呢?有可能吗?
    • 查看?是的,如果我发布的查询符合您的需求,那么create view some_view as select <copy query I posted above here>
    • 我指的不是数据库视图。我指的是这个假脱机输出文本文件,在像上面截图一样的表格视图中。
    • 啊哈。嗯,大概吧。我不知道,上次我使用 SQL*Plus 创建“报告”是很久以前的事了。现在我使用 GUI(报表生成器)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 1970-01-01
    • 2012-10-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多