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

求1T-SQL语句

2013-08-01 
求一T-SQL语句现在通过查询得出了下面这一张表:季度区县街道户型房屋数量1朝阳区东湖两室一厅11海淀区苏州

求一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 
/*
单位                                                                                                                                 


---------- --------------------------------------- --------------------------------------- --------------------------------------- ---------------------------------------
公司1        3.300000                                9.000000                                2.000000                                2.000000
公司2        4.200000                                9.600000                                2.100000                                2.000000
公司3        1.000000                                9.000000                                6.500000                                2.000000
平均值        2.833333                                9.200000                                3.533333                                2.000000

(4 row(s) affected)
*/
select 单位,数据1,数据2,数据3,数据4 from test where 月份=1
union all
select isnull('平均','')单位,avg(数据1)数据1,avg(数据2)数据2,avg(数据3)数据3,avg(数据4)数据4 from test where 月份=1 


[解决办法]

select 1 季度, N'朝阳区' 区县,N'东湖' 街道,N'两室一厅' 户型,1 房屋数量
into #t
union all select 1, N'海淀区' ,N'苏州街' ,N'两室一厅' ,3
union all select 1, N'海淀区' ,N'苏州街' ,N'一室一厅' ,1
union all select 1, N'海淀区' ,N'万泉庄' ,N'两室一厅' ,1
union all select 1, N'海淀区' ,N'中关村',N'一室一厅' ,1
union all select 1, N'西城区' ,N'西四' ,N'两室一厅' ,1
union all select 2, N'东城区' ,N'东四' ,N'一室一厅' ,1
union all select 2, N'海淀区' ,N'万泉庄',N'一室一厅' ,1
union all select 2, N'海淀区' ,N'中关村',N'一室一厅' ,1
union all select 2, N'西城区' ,N'西单', N'一室一厅' ,1
union all select 3, N'东城区' ,N'东单' ,N'一室一厅' ,1
union all select 3, N'东城区' ,N'万泉庄', N'一室一厅', 1


select [季度],isnull([区县],N'合计') [区县]
,case when [区县] is null then '' else isnull([户型],N'小计') end [户型],sum(房屋数量) as [房屋数量]
from #t
group by rollup([季度],[区县],[户型])

[解决办法]

create table nd
(季度 int, 区县 varchar(10), 街道 varchar(10), 户型 varchar(20), 房屋数量 int)

insert into nd
 select 1, '朝阳区','东湖', '两室一厅', 1 union all
 select 1, '海淀区','苏州街', '两室一厅', 3 union all
 select 1, '海淀区','苏州街', '一室一厅', 1 union all
 select 1, '海淀区','万泉庄', '两室一厅', 1 union all 
 select 1, '海淀区','中关村', '一室一厅', 1 union all
 select 1, '西城区','西四', '两室一厅', 1 union all
 select 2, '东城区','东四','一室一厅', 1 union all
 select 2, '海淀区','万泉庄', '一室一厅', 1 union all
 select 2, '海淀区','中关村', '一室一厅', 1 union all
 select 2, '西城区','西单','一室一厅', 1 union all
 select 3, '东城区','东单','一室一厅', 1 union all
 select 3, '东城区','万泉庄', '一室一厅', 1


select *
from
(select 季度 '季度',
        isnull(区县,'合计') '区县',
        case when 区县 is not null then '小计' else '' end '街道',


        '' '户型',
        sum(房屋数量) '房屋数量'
  from nd group by 季度,区县 with rollup having grouping(季度)=0
 union all
 select 季度,区县,街道,户型,房屋数量 from nd
) t 
order by 季度,
case when 区县='合计' then '' else 区县 end,
case when 街道='' then 1
     when 街道='小计' then 2 
     else 3 end

/*
季度          区县         街道         户型                   房屋数量
----------- ---------- ---------- -------------------- -----------
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           东城区        小计                              2
3           东城区        东单         一室一厅                 1
3           东城区        万泉庄        一室一厅                 1

(22 row(s) affected)
*/

热点排行