这种汇总查询怎么来实现?
表张表:
学校 学号 捐款性质 金额 捐款性质 金额
市北一中 005 义务 200.00 慈善 300.00
市北二中 012 义务 200.00 义务 200.00
市北二中 018 义务 500.00 慈善 800.00
市北一中 068 慈善 500.00 0
市北一中 218 慈善 50.00 0
我查询到象下面的效果:
学校 人数 义务捐款金额 慈善捐款金额 汇总金额
市北一中 3 200.00 850.00 1050.00
市北二中 2 900.00 800.00 1700.00
------解决方案--------------------select A1.学校,A1.人数,A2.义务捐款金额,A2.慈善捐款金额,A2.汇总金额
from
(
select 学校,
count(1) as 人数
From 表
group by 学校
) A1,
(
select T.学校,
sum(case when 捐款性质1= '义务 ' then 金额1 else 0 end) as 义务捐款金额,
sum(case when 捐款性质1= '慈善 ' then 金额1 else 0 end) as 慈善捐款金额,
sum(金额1) as 汇总金额
From
(
select 学校,捐款性质1,金额1
From 表
where 捐款性质1 <> ' ' and 金额1 <> 0
Union All
select 学校,捐款性质2,金额2
From 表
where 捐款性质2 <> ' ' and 金额2 <> 0
) T
group by T.学校
)A2
where A1.学校=A2.学校
------解决方案--------------------select 学校,count(1),
sum(case when 捐款性质1= '义务 ' then 金额1 else 0 end)+sum(case when 捐款性质1= '义务 ' then 金额1 else 0 end),
sum(case when 捐款性质1= '慈善 ' then 金额1 else 0 end)+sum(case when 捐款性质1= '慈善 ' then 金额2 else 0 end),
sum(金额1+金额2)
from 表 group by 学校