SQL:创建预告片计数

时间:2015-03-02 10:03:44

标签: sql oracle

我创建了一个查询,它将输出带有标题和详细信息的平面文件。 现在,我想添加一个包含详细记录总数的预告片记录。

我已使用row_number正确计算了记录总数,但它显示了每条记录。

如何获取最后一行,以便它反映预告片行中的总计数。

这是我已经为标题和详细信息创建的代码。

SQL> SELECT filerec FROM (
  2      SELECT 'FILENAME' AS filerec, 1 col FROM dual
  3      UNION ALL
  4      SELECT 'FILEDATE: ' || to_char(SYSDATE,'mm/dd/yyyy') as filerec, 2 col FROM dual
  5      UNION ALL
  6      SELECT empno || ename AS filerec, NULL col FROM emp
  7      ORDER BY 2,1
  8  );

这是我想要的输出。 (添加了最后一个rec,'TRAILER:0004')

FILENAME
FILEDATE: 02/27/2015
7369SMITH
7499ALLEN
7521WARD
7566JONES
TRAILER: 0004

1 个答案:

答案 0 :(得分:0)

有几种方法可以做到这一点。我更喜欢使用分组。了解它是如何使用的。我们有一个记录集:

SQL> select
  2    'Row ' || rownum
  3  from
  4    dual
  5  connect by
  6    level <= 5;

'ROW'||ROWNUM
--------------------------------------------
Row 1
Row 2
Row 3
Row 4
Row 5

现在我们希望添加计数:

SQL> select
  2    case
  3      when grouping_id(rownum) = 0 then 'Row ' || rownum
  4      else 'Total: ' || count(*) || ' row(s)'
  5    end
  6  from
  7    dual
  8  connect by
  9    level <= 5
 10  group by rollup (rownum);

CASEWHENGROUPING_ID(ROWNUM)=0T
------------------------------------------------------
Row 1
Row 2
Row 3
Row 4
Row 5
Total: 5 row(s)

6 rows selected