[此贴子已经被作者于2006-6-23 20:19:43编辑过]
declare @a table
(
县名 varchar(10),
乡名 varchar(10),
村名 varchar(10),
权属 varchar(10),
地类 varchar(10),
面积 numeric(10,1)
)
insert into @a
select 'a','aa','aaa','集体','水田',776.7 union all
select 'a','aa','aaa','集体','旱地',856.3 union all
select 'a','aa','aaa','国有','林地',148.1 union all
select 'a','aa','aaa','集体','水域',920.8 union all
select 'a','aa','aaa','国有','建筑用地',607.9 union all
select 'a','aa','aab','集体','水田',911.1 union all
select 'a','aa','aab','集体','旱地',913.2 union all
select 'a','aa','aab','国有','林地',739.7 union all
select 'a','aa','aab','国有','建筑用地',105.4 union all
select 'a','ab','aba','集体','水田',550.9 union all
select 'a','ab','aba','集体','旱地',862.7 union all
select 'a','ab','aba','国有','林地',759.6 union all
select 'b','ba','baa','集体','水田',827.3 union all
select 'b','ba','baa','集体','旱地',293.1 union all
select 'a','ab','aba','集体','林地',226.5 union all
select 'b','ba','baa','国有','水域',381.6 union all
select 'b','ba','baa','国有','建筑用地',886.6 union all
select 'b','ba','bab','集体','水田',768.1 union all
select 'b','ba','bab','集体','旱地',623 union all
select 'b','ba','bab','国有','林地',931.7 union all
select 'b','ba','baa','集体','水域',921.5 union all
select 'b','bb','bba','集体','旱地',973.1 union all
select 'b','bb','bba','国有','林地',410.6 union all
select 'b','bb','bba','集体','水域',530.6 union all
select 'b','bb','bbb','集体','水田',298.2 union all
select 'b','bb','bbb','集体','旱地',148.5 union all
select 'b','bb','bbb','国有','林地',19.5 union all
select 'b','bb','bbb','集体','水域',169
select * from @a
select
case when 权属='国有' or 权属='集体' then '' else 统计单位 end as 统计单位,
权属,
cast(水田 as varchar(10)) as 水田,
cast(旱地 as varchar(10)) as 旱地,
cast(林地 as varchar(10)) as 林地,
cast(水域 as varchar(10)) as 水域,
cast(建筑用地 as varchar(10)) as 建筑用地
from
(
select
case
when grouping(村名)=1 then '合计'
else 村名 end as 统计单位,
isnull((case
when grouping(权属)=1 then 村名+'村计'
else 权属 end),'合计') as 权属,
sum(case 地类 when '水田' then 面积 else 0 end) as 水田,
sum(case 地类 when '旱地' then 面积 else 0 end) as 旱地,
sum(case 地类 when '林地' then 面积 else 0 end) as 林地,
sum(case 地类 when '水域' then 面积 else 0 end) as 水域,
sum(case 地类 when '建筑用地' then 面积 else 0 end) as 建筑用地
from
@a
group by 村名,权属 with rollup
union
select
case
when grouping(乡名)=1 then '合计'
else 乡名 end as 统计单位1,
isnull((case
when grouping(权属)=1 then 乡名+'乡计'
else 权属 end),'合计') as 权属,
sum(case 地类 when '水田' then 面积 else 0 end) as 水田,
sum(case 地类 when '旱地' then 面积 else 0 end) as 旱地,
sum(case 地类 when '林地' then 面积 else 0 end) as 林地,
sum(case 地类 when '水域' then 面积 else 0 end) as 水域,
sum(case 地类 when '建筑用地' then 面积 else 0 end) as 建筑用地
from
@a
group by 乡名,权属 with rollup
union
select
case
when grouping(县名)=1 then '合计'
else 县名 end as 统计单位,
isnull((case
when grouping(权属)=1 then 县名+'县计'
else 权属 end),'合计') as 权属,
sum(case 地类 when '水田' then 面积 else 0 end) as 水田,
sum(case 地类 when '旱地' then 面积 else 0 end) as 旱地,
sum(case 地类 when '林地' then 面积 else 0 end) as 林地,
sum(case 地类 when '水域' then 面积 else 0 end) as 水域,
sum(case 地类 when '建筑用地' then 面积 else 0 end) as 建筑用地
from
@a
group by 县名,权属 with rollup
union
select
'合计' as 统计单位,
case when grouping(权属)=1 then '合计' else 权属 end as 权属,
sum(case 地类 when '水田' then 面积 else 0 end) as 水田,
sum(case 地类 when '旱地' then 面积 else 0 end) as 旱地,
sum(case 地类 when '林地' then 面积 else 0 end) as 林地,
sum(case 地类 when '水域' then 面积 else 0 end) as 水域,
sum(case 地类 when '建筑用地' then 面积 else 0 end) as 建筑用地
from
@a
group by 权属 with rollup
)a
order by charindex(','+a.统计单位+',',',合计,a,aa,aaa,aab,ab,aba,b,ba,baa,bab,bb,bba,bbb,'),
charindex (a.权属,'集体 国有')
/*
县名 乡名 村名 权属 地类 面积
---------- ---------- ---------- ---------- ---------- ------------
a aa aaa 集体 水田 776.7
a aa aaa 集体 旱地 856.3
a aa aaa 国有 林地 148.1
a aa aaa 集体 水域 920.8
a aa aaa 国有 建筑用地 607.9
a aa aab 集体 水田 911.1
a aa aab 集体 旱地 913.2
a aa aab 国有 林地 739.7
a aa aab 国有 建筑用地 105.4
a ab aba 集体 水田 550.9
a ab aba 集体 旱地 862.7
a ab aba 国有 林地 759.6
b ba baa 集体 水田 827.3
b ba baa 集体 旱地 293.1
a ab aba 集体 林地 226.5
b ba baa 国有 水域 381.6
b ba baa 国有 建筑用地 886.6
b ba bab 集体 水田 768.1
b ba bab 集体 旱地 623.0
b ba bab 国有 林地 931.7
b ba baa 集体 水域 921.5
b bb bba 集体 旱地 973.1
b bb bba 国有 林地 410.6
b bb bba 集体 水域 530.6
b bb bbb 集体 水田 298.2
b bb bbb 集体 旱地 148.5
b bb bbb 国有 林地 19.5
b bb bbb 集体 水域 169.0
统计单位 权属 水田 旱地 林地 水域 建筑用地
---------- -------------- ---------- ---------- ---------- ---------- ----------
合计 合计 4132.3 4669.9 3235.7 2923.5 1599.9
集体 4132.3 4669.9 226.5 2541.9 0.0
国有 0.0 0.0 3009.2 381.6 1599.9
a a县计 2238.7 2632.2 1873.9 920.8 713.3
集体 2238.7 2632.2 226.5 920.8 0.0
国有 0.0 0.0 1647.4 0.0 713.3
aa aa乡计 1687.8 1769.5 887.8 920.8 713.3
集体 1687.8 1769.5 0.0 920.8 0.0
国有 0.0 0.0 887.8 0.0 713.3
aaa aaa村计 776.7 856.3 148.1 920.8 607.9
集体 776.7 856.3 0.0 920.8 0.0
国有 0.0 0.0 148.1 0.0 607.9
aab aab村计 911.1 913.2 739.7 0.0 105.4
集体 911.1 913.2 0.0 0.0 0.0
国有 0.0 0.0 739.7 0.0 105.4
ab ab乡计 550.9 862.7 986.1 0.0 0.0
集体 550.9 862.7 226.5 0.0 0.0
国有 0.0 0.0 759.6 0.0 0.0
aba aba村计 550.9 862.7 986.1 0.0 0.0
集体 550.9 862.7 226.5 0.0 0.0
国有 0.0 0.0 759.6 0.0 0.0
b b县计 1893.6 2037.7 1361.8 2002.7 886.6
集体 1893.6 2037.7 0.0 1621.1 0.0
国有 0.0 0.0 1361.8 381.6 886.6
ba ba乡计 1595.4 916.1 931.7 1303.1 886.6
集体 1595.4 916.1 0.0 921.5 0.0
国有 0.0 0.0 931.7 381.6 886.6
baa baa村计 827.3 293.1 0.0 1303.1 886.6
集体 827.3 293.1 0.0 921.5 0.0
国有 0.0 0.0 0.0 381.6 886.6
bab bab村计 768.1 623.0 931.7 0.0 0.0
集体 768.1 623.0 0.0 0.0 0.0
国有 0.0 0.0 931.7 0.0 0.0
bb bb乡计 298.2 1121.6 430.1 699.6 0.0
集体 298.2 1121.6 0.0 699.6 0.0
国有 0.0 0.0 430.1 0.0 0.0
bba bba村计 0.0 973.1 410.6 530.6 0.0
集体 0.0 973.1 0.0 530.6 0.0
国有 0.0 0.0 410.6 0.0 0.0
bbb bbb村计 298.2 148.5 19.5 169.0 0.0
集体 298.2 148.5 0.0 169.0 0.0
国有 0.0 0.0 19.5 0.0 0.0
*/
[此贴子已经被作者于2006-6-23 23:28:11编辑过]