+ -
当前位置:首页 → 问答吧 → 一条SQL的查寻语句,麻烦下。

一条SQL的查寻语句,麻烦下。

时间:2011-12-03

来源:互联网

现有一表,如下:

学校 班级 学生 费用
一中 一年级 A 9
一中 一年级 B 9
一中 一年级 C 9
一中 二年级 D 9
二中 一年级 E 9
二中 一年级 F 9
二中 二年级 G 9
二中 二年级 H 10

要求 :要求查出每个学校对应班级的学生数量和费用总计,结果应该如下:
学校 一年级 二年级
学校 人数 费用 人数 费用
一中 3 27 1 9
二中 2 18 2 19


求查寻语句,年级可以不显示(一年级,二年级)这样的结果也行的,看的懂就好了。

学校 人数 费用 人数 费用
一中 3 27 1 9
二中 2 18 2 19





作者: sxssg   发布时间: 2011-12-03

行转列,楼主搜搜例子就会了。

作者: AcHerat   发布时间: 2011-12-03

SQL code
create table tb(学校 varchar(10),班级 varchar(10),学生 varchar(2),费用 int)
insert into tb
select '一中','一年级','A',9 union all
select '一中','一年级','B',9 union all
select '一中','一年级','C',9 union all
select '一中','二年级','D',9 union all
select '二中','一年级','E',9 union all
select '二中','一年级','F',9 union all
select '三中','二年级','G',9 union all
select '三中','二年级','H',10 


DECLARE @sql NVARCHAR(2000)
set @sql='select 学校'
select @sql=@sql+',sum(case 班级 when'''+班级+''' then 1 else 0 end) ['+班级+'人数],'+
                  'sum(case 班级 when'''+班级+''' then 费用 else 0 end) ['+班级+'费用]' 
from tb group by 班级
SET @sql=@sql+' from tb group by 学校'
EXEC(@sql)

/*
学校         二年级人数       二年级费用       一年级人数       一年级费用
---------- ----------- ----------- ----------- -----------
二中         0           0           2           18
三中         2           19          0           0
一中         1           9           3           27

(3 行受影响)

作者: ssp2009   发布时间: 2011-12-03

SQL code
select
   学校,
   sum(case 班级  when '一年级' then 1 else 0 end) as 人数,
   sum(case 班级  when '一年级' then 费用 else 0 end) as 费用,
   sum(case 班级  when '二年级' then 1 else 0 end) as 人数,
   sum(case 班级  when '二年级' then 费用 else 0 end) as 费用
from
   tb
group by
   学校

作者: fredrickhu   发布时间: 2011-12-03

热门下载

更多