日期:2014-05-17  浏览次数:20463 次

求一T-SQL语句
现在通过查询得出了下面这一张表:
季度 区县 街道 户型 房屋数量
1 朝阳区 东湖 两室一厅 1
1 海淀区 苏州街 两室一厅 3
1 海淀区 苏州街 一室一厅 1
1 海淀区 万泉庄 两室一厅 1
1 海淀区 中关村 一室一厅 1
1 西城区 西四 两室一厅 1
2 东城区 东四 一室一厅 1
2 海淀区 万泉庄 一室一厅 1
2 海淀区 中关村 一室一厅 1
2 西城区 西单 一室一厅 1
3 东城区 东单 一室一厅 1
3 东城区 万泉庄 一室一厅 1
但是要求得到的表格确实下面这样的
季度 区县 街道 户型 房屋数量
1 合计 8
1 朝阳区 小计 1
1 朝阳区 东湖 两室一厅 1
1 海淀区 小计 6
1 海淀区 苏州街 两室一厅 3
1 海淀区 苏州街 一室一厅 1
1 海淀区 万泉庄 两室一厅 1
1 海淀区 中关村 一室一厅 1
1 西城区 小计 1
1 西城区 西四 两室一厅 1
2 合计 4
2 东城区 小计 1
2 东城区 东四 一室一厅 1
2 海淀区 小计 2
2 海淀区 万泉庄 一室一厅 1
2 海淀区 中关村 一室一厅 1
2 西城区 小计 1
2 西城区 西单 一室一厅 1
3 合计 2
3 东城区 小计 1
3 东城区 东单 一室一厅 1
3 东城区 小计 1
3 东城区 万泉庄 一室一厅 1
多了两个要求,一个是按季度统计出所有出租房屋的数量,以及按季度按区县统计所有出租房屋数量,简单地说就是如何在第一张表的基础上如何变为第二章的效果?

------解决方案--------------------
就是各种group by 再各种union all
------解决方案--------------------
你这个要么做个Excel,或者用UNION挨个统计吧
------解决方案--------------------
请参考:
if object_id('test') is not null
drop table test
go
create table test(单位 varchar(10),月份 int, 数据1 decimal(8,2),
 数据2 decimal(8,2), 数据3 decimal(8,2), 数据4 decimal(8,2))
insert into test
select '公司1' ,1, 3.30 , 9.00 , 2.00 , 2.00 union
select '公司2', 1, 4.20,  9.60 , 2.10,  2.00 union
select '公司3', 1 ,1.00 , 9.00,  6.50 , 2.00 union
select '公司1', 2, 3.00 , 2.00 , 2.00 , 7.80 union
select '公司2', 3 ,4.20,  9.60 , 2.10 , 2.00 
select isnull(单位,'平均值') as 单位,avg(数据1),avg(数据2),avg(数据3),avg(数据4) from test where 月份=1 
group by  单位  with rollup 
/*
单位