问题描述
我在查询时要选择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)来解决一个稍微复杂的解决方案,而不是涉及两种或多种语言或应用程序的解决方案。 )
,一个简单的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>