1

是否可以使用 group by 在行中添加摘要:具体来说,我正在寻找以下输出。

主表

Client|Billing
--------------
a     |   34
a     |   27
b     |   29
b     |   27
c     |   28
c     |   37

输出应如下所示:

Client|Billing
--------------
a     |  34
a     |  27
Total |  61
b     |  29
b     |  27
Total |  56
c     |  28
c     |  37
Total |  65

这里第一个总数是客户 a 的计费总和,类似地,接下来的 2 个总数分别是客户 b 和 c 的总和。

我可以使用以下代码实现类似的要求:select cast(Client as varchar(10)) Client, Billing from mydata union all select 'Total', sum(Billing) from mydata group by Client

但是总行数在最后,如下所示:(

  Client|Billing
    a   |34
    a   |27
    b   |29
    b   |27
    c   |28
    c   |37
Total   |61
Total   |56
Total   |65
4

4 回答 4

2

检查这个。

    select * from mydata 
    union 
    select (Client ||'_Total') Client 
    ,SUM(Billing)sum from mydata 
    group by Client 
    order by Client
于 2017-03-01T09:32:41.023 回答
0

要正确排序“总计”列,您必须保留客户名称,以便以后可以按其排序;该OrderNr列用于在同一客户端的其他行之后对总计进行排序:

SELECT DisplayName AS Client,
       Billing
FROM (SELECT Client AS DisplayName,
             Client,
             Billing,
             1 AS OrderNr
      FROM MyTable

      UNION ALL

      SELECT 'Total',
             Client,
             sum(Billing),
             2 AS OrderNr
      FROM MyTable
      GROUP BY Client)
ORDER BY Client,
         OrderNr;
于 2017-03-01T11:53:55.613 回答
0

我在sqlite中转换 @mr.bhosale 的答案

尝试这个

    select * from table_name
    union
    select Client || '_Total' Client ,SUM(Billing)sum from table_name
    group by Client
    order by Client
于 2017-03-01T09:38:10.977 回答
-1
select * from mydata 
  union
  select (Client ||'_Total') Client ,SUM(Billing)sum from mydata
  group by Client
  order by Client
于 2017-03-01T09:43:18.273 回答