如何获得一组数据的总和

时间:2015-09-05 15:15:28

标签: sql tsql

获取此数据列表时遇到问题。我试过的大部分内容都没有像预期的那样。

这是我的输入数据:

           Code     Name   total
           01      First     50
           02      Last      20
           11      First     10
           12      Last      25
           21      First     15
           22      Last      15

这是我想要的输出:

          Code     Name   total

           01      First     50
           02      Last      20
   GROUP:  0        -        70

           11      First     10
           12      Last      25
   GROUP:  1        -        35

           21      First     15
           22      Last      15
   GROUP:  2        -        30

我需要第三行(不是列),前两行代表前两行组(组零)(前两行的总和,如第三行),也代表最后两组。

2 个答案:

答案 0 :(得分:0)

declare @table table (code varchar(10), name varchar(10), total int);
insert into @table(code, name, total) values 
                  ('01', 'First', 50),
                  ('02', 'Last',  20),
                  ('11', 'First', 10),
                  ('12', 'Last',  15),
                  ('21', 'First', 15),
                  ('22', 'Last',  15);
 select * from @table;
 --select code, name, sum(total)
 --  from @table 
 -- group by rollup (substring(code,1,1), name);
 select code, name, total, 
        sum(total) over (partition by substring(code,1,1)) as subtotal
  from @table;

不再支持计算:
触及范围未经测试

 SELECT Code, Name, Total 
   FROM Table
  ORDER BY Code, Name 
COMPUTE SUM(Total) BY SubString(Code,1,1);  

Compute

答案 1 :(得分:0)

当我看到这个问题时,这是我最初的想法。可能更好地使用分组集而非计算,因为Microsoft已弃用它。

1

修复了旧查询的一些问题。这是一个SQL Fiddle