SQL*加上自定义汇总报告
SQL*Plus Custom Summary Report
我需要生成如下所示的摘要报告:
我的问题是,
- 我不知道如何在此自定义报告中填写计数数据。
- 我不知道如何将它放在文本文档中像上面那样的 table 视图中。不是 HTML.
到目前为止,我只知道如何在没有 table 视图的情况下处理第一行和第一列。
这是我的代码。
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 是一个 insert into 语句。
SELECT COUNT(*) INTO total_records FROM TABLE;
我没有做过匹配记录和不匹配记录。但是我能想到的唯一办法
- Select 一个语句变成一个游标。
- 循环进入光标。
- 有匹配时增加匹配计数。
- 一旦循环结束。不匹配计数 = 总计数 - 匹配计数。
我认为这不是最有效的方法。但是,如果你有更好的方法,请告诉我。
像这样的东西能敲响警钟吗?示例基于 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>
我需要生成如下所示的摘要报告:
我的问题是,
- 我不知道如何在此自定义报告中填写计数数据。
- 我不知道如何将它放在文本文档中像上面那样的 table 视图中。不是 HTML.
到目前为止,我只知道如何在没有 table 视图的情况下处理第一行和第一列。
这是我的代码。
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 是一个 insert into 语句。
SELECT COUNT(*) INTO total_records FROM TABLE;
我没有做过匹配记录和不匹配记录。但是我能想到的唯一办法
- Select 一个语句变成一个游标。
- 循环进入光标。
- 有匹配时增加匹配计数。
- 一旦循环结束。不匹配计数 = 总计数 - 匹配计数。
我认为这不是最有效的方法。但是,如果你有更好的方法,请告诉我。
像这样的东西能敲响警钟吗?示例基于 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>