SQL分类汇总,行和列统计汇总 10C

通过表
县 森林类别 乔木林面积 灌木林面积
长沙市 地方公益林地 1.4959 0.8806
长沙市 国家级二级公益林地 2.1724 8.0384
长沙市 国家级三级公益林地 0 0
长沙市 一般商品林地 11.6623 4.2785
长沙市 重点商品林 3.6524 2.3658

得到以后汇总表

县 森林类别 合计 乔木林面积 灌木林面积
长沙市 地方公益林地 2.3765 1.4959 0.8806
长沙市 国家级二级公益林地 10.2108 2.1724 8.0384
长沙市 国家级三级公益林地 0.8577 0.5212 0.3365
公益林地 13.445 4.1895 9.2555
长沙市 一般商品林地 15.9408 11.6623 4.2785
长沙市 重点商品林地 6.0182 3.6524 2.3658
商品林地 21.959 15.3147 6.6443

sql

7个回答

CREATE TABLE #Temp --县 森林类别 乔木林面积 灌木林面积
(
id int,
county nvarchar(50),
type nvarchar(50),
jolinlinarea decimal(18,10),
shrubberyarea decimal(18,10)
)

INSERT INTO #Temp VALUES
(1,'长沙市','地方公益林地',1.4959 ,0.8806),
(2,'长沙市','国家级二级公益林地',2.1724,8.0384),
(3,'长沙市','国家级三级公益林地',0,0),
(4,'长沙市','一般商品林地',11.6623,4.2785),
(5,'长沙市','重点商品林地',3.6524,2.3658)

select * from
(
select 1 as orderby,county,type,(jolinlinarea+jolinlinarea) as total,jolinlinarea,shrubberyarea from #Temp
union all
select null as orderby,county,RIGHT(type,4), sum(jolinlinarea+jolinlinarea) as total,sum(jolinlinarea) as jolinlinarea,sum(shrubberyarea) as shrubberyarea from #Temp
group by county,RIGHT(type,4)
)temp0
order by RIGHT(type,4),orderby desc

qq_35955916
程序员的键盘 (jolinlinarea+jolinlinarea) total字段加错了 两个加重复了 改一下(jolinlinarea+shrubberyarea)这样才对
大约 2 年之前 回复

create table tmp_aaa(县 varchar2(30),森林类别 varchar2(100),乔木林面积 number,灌木林面积 number,type number);
select a.*,rowid from tmp_aaa a;

update tmp_aaa a set a.type=1
where a.森林类别 like '%公益林地%';
commit;
update tmp_aaa a set a.type=2
where a.森林类别 like '%商品林地%';
commit;

select * from
(select a.县,case when a.type=1 and a.森林类别 is null then '公益林地'
when a.type=2 and a.森林类别 is null then '商品林地' else a.森林类别 end 森林类别,
sum(a.乔木林面积+a.灌木林面积),sum(a.乔木林面积),sum(a.灌木林面积)
from tmp_aaa a
group by a.县,type,cube(a.森林类别))a
order by decode(a.森林类别,'地方公益林地',1,'国家级二级公益林地',2,'国家级三级公益林地',3
,'公益林地',4,'一般商品林地',5,'重点商品林地',6,'商品林地',7);

select 县 森林类别 乔木林面积+灌木林面积 乔木林面积 灌木林面积 from 表;
select 公益林地 乔木林面积+灌木林面积 乔木林面积 灌木林面积 from 表 where 森林类别 like "%公益林地%";
select 商品林地 乔木林面积+灌木林面积 乔木林面积 灌木林面积 from 表 where 森林类别 like "%商品林地%";
我的理解是这样的,没有测试。有错误还望指出

weixin_42078295
小猫子乙 select "公益林地", sum(乔木林面积)+sum(灌木林面积) sum(乔木林面积), sum(灌木林面积) from 表 where 森林类别 like "%公益林地%"; select "商品林地", sum(乔木林面积)+sum(灌木林面积), sum(乔木林面积), sum(灌木林面积) from 表 where 森林类别 like "%商品林地%";
大约 2 年之前 回复
weixin_42078295
小猫子乙 select "公益林地", sum(乔木林面积)+sum(灌木林面积) sum(乔木林面积), sum(灌木林面积) from 表 where 森林类别 like "%公益林地%"; select 商品林地 乔木林面积+灌木林面积 乔木林面积 灌木林面积 from 表 where 森林类别 like "%商品林地%";
大约 2 年之前 回复

select 县 森林类别 sum(面积) 乔木林面积 灌木林面积 from 表 group by order by .

现有姓名列,时间列。要求统计出所有性名列中一样的名字并且汇总相加,条件为在一定时间段内。
例:表名:TABLE
xingming shijian
A 2010-5-15
B 2010-5-16
A 2010-5-16
D 2010-5-17
我的代码是这样写的
select xingming,count(xingming)as ry,shijian
from table
where shijian>='2010-5-15'and shijian<='2010-5-16'
group by xingming,shijian
结果为
xingming ry shijian
A 1 2010-5-15
A 1 2010-5-16
B 1 2010-5-16
我想要的结果是
xingming ry shijian
A 2 2010-5-15
B 1 2010-5-16

tiansb_1989
tiansb_1989 select xingming,count(xingming)as ry,min(shijian) from table where shijian>='2010-5-15' and shijian<='2010-5-16' group by xingming;
大约 2 年之前 回复

县 森林类别 合计 乔木林面积 灌木林面积
长沙市 地方公益林地 2.3765 1.4959 0.8806
长沙市 国家级二级公益林地 10.2108 2.1724 8.0384
长沙市 国家级三级公益林地 0.8577 0.5212 0.3365
select 县,森林类别,(乔木林面积+灌木林面积) as 合计,乔木林面积,灌木林面积 from 表 where 森林类别=地方公益林地 or 森林类别=国家级二级公益林地 or 森林类别=国家级三级公益林地

公益林地 13.445 4.1895 9.2555
select sum(合计),sum(乔木林面积),sum(灌木林面积) from
(select 县,森林类别,(乔木林面积+灌木林面积) as 合计,乔木林面积,灌木林面积 from 表 where 森林类别=地方公益林地 or 森林类别=国家级二级公益林地 or 森林类别=国家级三级公益林地)

县 森林类别 合计 乔木林面积 灌木林面积
长沙市 一般商品林地 15.9408 11.6623 4.2785
长沙市 重点商品林地 6.0182 3.6524 2.3658
select 县,森林类别,(乔木林面积+灌木林面积) as 合计,乔木林面积,灌木林面积 from 表 where 森林类别=一般商品林地 or 森林类别=重点商品林地

商品林地 21.959 15.3147 6.6443
select sum(合计),sum(乔木林面积),sum(灌木林面积)
from (select 县,森林类别,(乔木林面积+灌木林面积) as 合计,乔木林面积,灌木林面积 from 表 where 森林类别=一般商品林地 or 森林类别=重点商品林地)

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问