ROLL UP 仅保留总计并删除小计

问题描述

对于以下查询输出我有 2 个问题:

b()

enter image description here 1.) 如何只保留最后一行的“Grand Total”并删除“DivTotal”、“SecTotal”、“DeptTotal”。

2.) 有没有更好的选择来使用“WITH ROLLUP”,以便我只选择需要小计的列,而不是对 GROUP BY 子句中的所有列进行小计?

注意:我已经在使用多个 UNION,所以如果可能,请给出没有联合的解决方案。 无法嵌入图片,给您带来不便敬请谅解。

解决方法

我认为 CTE 和摘要可能是一种更简单的方法:

with cte as (
      select m.Division,m.Section,m.Department,m.Assortment,m.Promo,m.Range_Details,. . . 
      from . . .
      group by m.Division,m.Range_Details
     )
select *
from cte
union all
select 'Grand Total',null,sum(WH_STK),. . . 
from cte;
,

我以这种方式解决了这个问题,灵感来自于 stackoverflow 本身的答案:

COALESCE(Division,'Grand Total') Divi,(CASE WHEN Division IS NOT NULL THEN COALESCE(Section,'DivTotal') ELSE '' END) Sec,(CASE WHEN Section IS NOT NULL THEN COALESCE(m.Department,'SecTotal') ELSE '' END) Dept,(CASE WHEN m.Department IS NOT NULL THEN COALESCE(Assortment,' Total') ELSE '' END) Assort,COALESCE(Promo,'') Prom,(CASE WHEN Division IS NULL  THEN COALESCE(Range_Details,'Grand Total') ELSE COALESCE(Range_Details,'') END) Range_

感谢大家抽出时间。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...