【问题标题】:SQL showing summary after each column value changesSQL 在每列值更改后显示摘要
【发布时间】:2019-10-08 00:13:50
【问题描述】:

我有分支机构的销售数据。我想要一个 SQL,它将为我提供每个 branchId 的销售数据摘要,如下所示,当然,BranchId(s) 很大,所以我必须使其动态化(我不能使用 Union)。我被困在如何在每个分支动态更改后添加摘要行。

+ ---------+--------+---------+------------+ |分支 ID |兑现 |兑现 |卡销售 | + ---------+--------+---------+------------+ | 1 | 1000 | 500 | 50 | | 1 | 500 | 2500 | 100 | | 1 | 1000 | 200 | 200 | |总计 | 2500 | 3200 | 350 | | 5 | 100 | 500 | 500 | |总计 | 100 | 500 | 500 | | 7 | 100 | 100 | 100 | | 7 | 200 | 300 | 400 | |总计 | 300 | 400 | 500 | + ---------+--------+---------+------------+

【问题讨论】:

标签: sql oracle group-by


【解决方案1】:

蛮力的方法是做聚合然后交错结果:

select (case when is_base = 1 then to_char(BranchId)
             else replace('Total ([BranchId])', '[BranchId]', BranchId)
        end) as BranchId, CashIn, CashOut, CardSales
from ((select BranchId, CashIn, CashOut, CardSales, 1 as is_base
       from t
      ) union all
      (select BranchId, sum(CashIn), sum(CashOut), sum(CardSales), 0 as is_base
       from t
       group by BranchId
      )
     ) t
order by t.BranchId, is_base desc;

Here 是一个 dbfiddle。

【讨论】:

  • @AnkurBhutani 。 . .我添加了一个 dbfiddle 并修复了几个错别字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-09
  • 2016-03-21
  • 1970-01-01
  • 2015-10-13
  • 2015-07-03
相关资源
最近更新 更多