- 爱易网页
- 
                            MSSQL教程
- SQL两次分组有关问题请问 
日期:2014-05-19  浏览次数:20852 次 
                    
                        
                         SQL两次分组问题请教
我的数据库包含如下字段: 
 料号   品名   产品大类   销售金额    
 001      001-1   1001            2000 
 002      002-1   1001            3000 
 003      003-1   2001            4000 
 004      004-1   2001            5000 
 005      005-1   1001            1000 
 001      001-1   1001            2000 
 003      003-1   2001            4000 
  
 等等 
  
 现在想通过分组   得到    
  
 料号   品名      产品大类      销售总额 
 001      001-1      1001               4000         (   即料号001的   销售金额汇总) 
 002      002-1      1001               3000 
 005      005-1      1001               1000 
 分组   1001                                 总计   8000 
  
 料号   品名      产品大类      销售总额 
 003      003-1   2001                     8000 
 004      004-1   2001                     5000 
 分组   2001                                 总计   13000 
  
 请问用SQL   如何做查询语句?   怎么写   SQL的存储过程? 
  
 谢谢! 
                    
  
  
------解决方案--------------------
create table #t (料号 varchar(100), 品名 varchar(100), 产品大类 varchar(100), 销售金额 int) 
 insert into #t 
 select  '001 ', '001-1 ', 1001,    2000 union all 
 select  '002 ', '002-1 ', 1001,    3000 union all 
 select  '003 ', '003-1 ', 2001,    4000 union all 
 select  '004 ', '004-1 ', 2001,    5000 union all 
 select  '005 ', '005-1 ', 1001,    1000 union all 
 select  '001 ', '001-1 ', 1001,    2000 union all 
 select  '003 ', '003-1 ', 2001,    4000 
  
 select * 
 from ( 
     select 料号,品名,产品大类,sum(销售金额) as 销售总额 
     from #t 
     group by 料号,品名,产品大类 
  
     union all 
  
     select  '分组 ' as 料号, '总计 ' as 品名,产品大类,sum(销售金额) as 总计 
     from #t 
     group by 产品大类) tt 
  
 order by 产品大类,料号 
  
  
 drop table #t 
------解决方案--------------------
if object_id( 'pubs..tb ') is not null 
    drop table tb 
 go 
  
 create table tb(料号 varchar(10),品名 varchar(10),产品大类 varchar(10),销售金额 int) 
 insert into tb(料号,品名,产品大类,销售金额) values( '001 ',   '001-1 ',  '1001 ',    2000) 
 insert into tb(料号,品名,产品大类,销售金额) values( '002 ',   '002-1 ',  '1001 ',    3000) 
 insert into tb(料号,品名,产品大类,销售金额) values( '003 ',   '003-1 ',  '2001 ',    4000) 
 insert into tb(料号,品名,产品大类,销售金额) values( '004 ',   '004-1 ',  '2001 ',    5000) 
 insert into tb(料号,品名,产品大类,销售金额) values( '005 ',   '005-1 ',  '1001 ',    1000) 
 insert into tb(料号,品名,产品大类,销售金额) values( '001 ',   '001-1 ',  '1001 ',    2000) 
 insert into tb(料号,品名,产品大类,销售金额) values( '003 ',   '003-1 ',  '2001 ',    4000) 
  
 select isnull(料号, '总计 ') 料号, isnull(品名, '小计 ') 品名,isnull(产品大类, '小计 ') 产品大类,sum(销售金额) as 销售金额