首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

需要这样的统计结果,请大家指点,该如何处理

2012-02-26 
需要这样的统计结果,请大家指点我的一个数据表中有这些资料ID主题大类小类类别时间1价格不太对百货电视价

需要这样的统计结果,请大家指点
我的一个数据表中有这些资料

ID主题大类小类类别时间
1价格不太对百货电视价格2007-1-1
2主题内容百货电视质量2007-1-1
3主题内容百货冰箱质量2007-1-1
4主题内容服务类互连网质量2007-1-1


最终要得到这样形式的统计表

根据给出的时间段得出该时间范围内的如下统计表:
项目价格质量合计
电视112
冰箱011
百货(小计)123
互连网011
服务类(小计)011

[解决办法]
价格同质量从那来的?
[解决办法]


create table #T(ID int,主题 varchar(100),大类 varchar(100),小类 varchar(100),类别 varchar(100),时间 datetime)


insert into #t select 1, '价格不太对 ', '百货 ', '电视 ', '价格 ', '2007-1-1 '
insert into #t select 2, '主题内容 ', '百货 ', '电视 ', '质量 ', '2007-1-1 '
insert into #t select 3, '主题内容 ', '百货 ', '冰箱 ', '质量 ', '2007-1-1 '
insert into #t select 4, '主题内容 ', '服务类 ', '互连网 ', '质量 ', '2007-1-1 '


select 小类,价格,质量,合计
from
(
select
大类,
小类,
sum(case when 类别= '价格 ' then 1 else 0 end) as 价格,
sum(case when 类别= '质量 ' then 1 else 0 end) as 质量,
sum(1) as 合计,
1 as xh
from #t
group by 大类,小类
union all
select 大类,大类 + '(小计) ' as 小类,
sum(case when 类别= '价格 ' then 1 else 0 end) as 价格,
sum(case when 类别= '质量 ' then 1 else 0 end) as 质量,
sum(1) as 合计,
2 as xh
from #t
group by 大类) T
order by 大类,xh


drop table #t


/*

项目价格质量合计
电视112
冰箱011
百货(小计)123
互连网011
服务类(小计)011


*/

[解决办法]
select isnull(小类,大类+ ' 小计: '),count(case when 类别= '价格 ' then 1 end) ,
count(case when 类别= '质量 ' then 1 end),count(1)
from # group by 大类,小类 WITH ROLLUP having grouping(大类) <> 1

热点排行