select 年度  , 分类 , sum(数量)  数量 ,  产品总数 =  (select sum(数量) from tb where 年度 = t.年度) group by 年度  , 分类

解决方案 »

  1.   

    create table tb(年度 int, 名称 varchar(10), 分类 varchar(10) ,  数量 int)
    insert into tb values(2008 , 'A' ,   '优制品' ,   50 )
    insert into tb values(2008 , 'A' ,   '合格'   ,   20 )
    insert into tb values(2008 , 'B' ,   '优制品' ,   30 )
    insert into tb values(2008 , 'B' ,   '合格'   ,   40 )
    insert into tb values(2009 , 'A' ,   '优制品' ,   60 )
    insert into tb values(2009 , 'A' ,   '合格'   ,   30 )
    insert into tb values(2009 , 'B' ,   '优制品' ,   40 )
    insert into tb values(2009 , 'B' ,   '合格'   ,   50 )
    goselect 年度  , 分类 , sum(数量)  数量 ,  产品总数 =  (select sum(数量) from tb where 年度 = t.年度) from tb t group by 年度  , 分类drop table tb/*
    年度          分类         数量          产品总数        
    ----------- ---------- ----------- ----------- 
    2008        合格         60          140
    2008        优制品        80          140
    2009        合格         80          180
    2009        优制品        100         180(所影响的行数为 4 行)*/
      

  2.   

    if object_id('tb')is not null drop table tb
    go
    create table tb(年度 varchar(10),  名称 varchar(10),  分类 nvarchar(10),    数量 int) 
    insert tb select 2008  ,'A',    N'优制品' ,   50 
    insert tb select 2008  ,'A',    N'合格'     , 20 
    insert tb select 2008  ,'B',    N'优制品'  ,  30 
    insert tb select 2008  ,'B',    N'合格'      ,40 
    insert tb select 2009  ,'A',    N'优制品'  ,  60 
    insert tb select 2009  ,'A',    N'合格'      ,30 
    insert tb select 2009 , 'B',    N'优制品' ,   40 
    insert tb select 2009,  'B',    N'合格'     , 50 
    SELECT 年度,分类,SUM(数量)数量,(SELECT SUM(数量) FROM TB WHERE 年度=T.年度) FROM TB T  GROUP BY 年度,分类
    /*年度         分类         数量                      
    ---------- ---------- ----------- ----------- 
    2008       合格         60          140
    2008       优制品        80          140
    2009       合格         80          180
    2009       优制品        100         180*/