甲骨文总计

问题描述

我在查询时要选择4列。而且,我想将总计放在一列的底部,而不要进行任何分组:

选择客户编号,电子邮件,总计金额,订单日期
从..........

我想在底部总计总计TOTAL_AMOUNT,但无需担心任何分组。我没有看到如何使用GROUPING或ROLLUP执行此操作。我希望不要在另一个oolumn中拥有任何运行总计,而在底部拥有总计。

非常感谢。

解决方法

您可以添加带有UNION ALL和一列的总计行,以跟踪该行是否用于总计。

select customer_id,email,total_amount,order_date,0 is_grand_total
from orders
union all
select null,null,sum(total_amount),1 is_grand_total
from orders
order by is_grand_total,customer_id;

SQL Fiddle example.

(我认为,这通常是向查询添加摘要逻辑的好方法。我宁愿使用一种语言(SQL)来解决一个稍微复杂的解决方案,而不是涉及两种或多种语言或应用程序的解决方案。 )

,

一个简单的SQL * Plus选项:

SQL> break on report
SQL> compute sum of sal on report
SQL>
SQL> select deptno,ename,sal
  2  from emp
  3  where deptno = 10;

    DEPTNO ENAME             SAL
---------- ---------- ----------
        10 CLARK            2450
        10 KING             5001
        10 MILLER           1300
                      ----------
sum                         8751

SQL>