数据分组问题

转载 2006年06月11日 16:44:00

表:
F1       F2
-----------------
A         1    
A         1    
A         1    
A         2    
A         1    
B         1    
B         1    
B         1  
请问怎样实现如下结果(SQL解决):
F1        F2     
-----------------
A         1     
A         1     
A         1     
A         2     
A         1
 Total A: 6 
B         1     
B         1     
B         1     
 Total B: 3  

--数据
declare @t table (F1 varchar(10),F2 int)
insert @t select 'A',1
union all select 'A',1
union all select 'A',1
union all select 'A',2
union all select 'A',1
union all select 'B',1
union all select 'B',1
union all select 'B',1
union all select 'C',1
union all select 'C',2
union all select 'C',1
union all select 'C',3

--语句1.不显示最后一行(如果不要的话)

declare @count int
declare @s varchar(8000)
select id=identity(int,1,1), * into # from @t
set @count=@@rowcount+(select count(distinct(F1)) from #)
select @count
select  @s=(
'select top '+rtrim(@count)+'
(
case isnumeric(isnull(rtrim(id),''Total:'')) when 1 then ''''
when 0  then (isnull(rtrim(id),''Total:'')) end
)+isnull(F1,''All'') as F1
,sum(F2) as F2
from #
group by F1,id with rollup
')
exec (@s)

--语句2,显示最后一行
select
(
case isnumeric(isnull(rtrim(id),'Total:')) when 1 then ''
when 0  then (isnull(rtrim(id),'Total:')) end
)+isnull(F1,'All') as F1
,sum(F2) as F2
from #
group by F1,id with rollup

--破弃测试环境
drop table #

/*
结果集1:

F1                     F2         
---------------------- -----------
A                      1
A                      1
A                      1
A                      2
A                      1
Total:A                6
B                      1
B                      1
B                      1
Total:B                3
C                      1
C                      2
C                      1
C                      3
Total:C                7

结果集2
F1                     F2         
---------------------- -----------
A                      1
A                      1
A                      1
A                      2
A                      1
Total:A                6
B                      1
B                      1
B                      1
Total:B                3
C                      1
C                      2
C                      1
C                      3
Total:C                7
Total:All              16

*/

相关文章推荐

[sql server] 问题总结11---按某一字段分组取最大(小)值所在行的数据

--按某一字段分组取最大(小)值所在行的数据--(爱新觉罗.毓华(十八年风雨,守得冰山雪莲花开) 2007-10-23于浙江杭州)/*数据如下:name val memoa    2   a2(a的第...
  • sgear
  • sgear
  • 2011年04月06日 18:24
  • 834

3.mysql的中文问题,database级操作,表级操作,数据CRUD,分组操作,时间和日期,字符串相关函数,表的约束

 1 连接MYSQL服务器:mysql–uroot –p123456 查看中文问题 show variables like 'character%'; ...

iOS-分组UITableView删除崩溃问题(当删除section中最后一条数据崩溃的情况)

错误: The number of sections contained in the table view after the update (1) must be equal to the num...

使用JqGrid列表数据分组显示问题的解决方法

使用JqGrid列表数据分组显示的问题解决方法

2.数据检索|模糊查询|数据排序|数据分组| 常见问题0726

难点====分组查询group by...having         在分组查询中,查询的列名         必须出现在group by后或者在聚合函数中         --查询平均工资大...

基于动态分组算法求解TSP问题

  • 2010年05月03日 10:03
  • 404KB
  • 下载

JQuery Mobile 中实现 jqGrid 数据分组

  • 2015年10月29日 11:58
  • 411KB
  • 下载

[51nod 1223] x^A mod B问题 - bsgs,原根,中国剩余定理,二进制分组

k次剩余
  • whzzt
  • whzzt
  • 2017年04月17日 23:01
  • 328
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:数据分组问题
举报原因:
原因补充:

(最多只允许输入30个字)