分類匯總問題
drop table acreate table a (a int ,b int,c int)insert into a
select 1,100,10 union all
select 2,200 ,20 union all
select 3,300,30 union all
select 4,300,40 union all
select 5,400,50 union all
select 6,500,60 union all
select 7,700,70 union all
select 8,800,80select * from a 
a                  b                 c
1 100 10
2 200 20
3 300 30
4 300 40
5 400 50
6 500 60
7 700 70
8 800 80
---要實現newc=對上一列的值加上本身,CsumB=C+B(--C,B為對上一列的值加上本身)
a                 b                 c                 newc          CsumB
1 100 10 10 110
2 200 20 30 330
3 300 30 60 660
4 300 40 100 1000
5 400 50 150 1450
6 500 60 210 2010
7 700 70 280 2780
8 800 80 360 3660
select identity(int,1,1) as id,* into #t from a---加上標志字段
select a.a,a.b,a.c,newC=(select  sum(c) from #t  where  id<=a.id),CsumB=(select  sum(c+b) from #t  where  id<=a.id) from #t a 
---結果
--刪除測試條件
drop table # t

解决方案 »

  1.   

    这样不行吗?select 称重性质,供货单位,sum(重量) as 重量
    from 表
    group by 称重性质,供货单位
      

  2.   

    select 称重性质, 供货单位, sum(重量) from 表 group by 称重性质, 供货单位 WITH ROLLUP
      

  3.   

    看一下ROLLUP的帮助,你就可以自己解决了
      

  4.   

    select 称重性质,供货单位,sum(重量) 
    from 表
    group by 称重性质,供货单位 with rollup
    having grouping(称重性质)=0
      

  5.   

    看差了 试试这样吧select 称重性质=case when grouping(称重性质)=1 then '' else 称重性质 end ,
           供货单位=case when grouping(供货单位)=1 then ' 'else 供货单位 end ,
           重量=sum(重量)
    from 表
    group by 称重性质,供货单位 with rollup
      

  6.   

    --示例数据create table tb(编号 int,供货单位 varchar(10),称重性质 varchar(10),重量 int)
    insert tb select 1,'AAAA','CC',10
    union all select 2,'AAAB','CC',20
    union all select 3,'SSSS','BC',15
    union all select 4,'SDAA','DF',14
    union all select 5,'AAAA','CC',5
    go--查询
    select 称重性质,供货单位=case when grouping(供货单位)=1 then '' else 供货单位 end,
    重量=sum(重量)
    from tb
    group by 称重性质,供货单位 with rollup
    having grouping(称重性质)=0
    order by 称重性质,grouping(供货单位) desc,供货单位
    go--删除测试
    drop table tb/*--结果称重性质       供货单位       重量          
    ---------- ---------- ----------- 
    BC                    15
    BC         SSSS       15
    CC                    35
    CC         AAAA       15
    CC         AAAB       20
    DF                    14
    DF         SDAA       14(所影响的行数为 7 行)
    --*/