学校 学期 参考人数 女生 男生
A 1 20 10 10
A 2 40 10 30
B 1 16 8 8
B 2 30 15 15
B 3 10 5 5
C 4 10 5 5
转化后的数据 学校 共几个学期 第1学期参考人数 第1学期女生的比例 第1学期男生的比例 第2学期参考人数
第2学期女生的比例 第2学期男生的比例 第3学期参考人数 第3学期女生的比例 第3学期男生的比例 第4学期参考人数 第4学期女生的比例 第4学期男生的比例 。。这里的表头需要根据学期来的 不能写死
得到的数据如A 2 20 50 50 40 25 75
B 3 16 50 50 30 50 50 10 50 50
C 1 10 50 50
数据要对应到学期里面去。 这里是列举只有4个学期 但是实际有30多
A 1 20 10 10
A 2 40 10 30
B 1 16 8 8
B 2 30 15 15
B 3 10 5 5
C 4 10 5 5
转化后的数据 学校 共几个学期 第1学期参考人数 第1学期女生的比例 第1学期男生的比例 第2学期参考人数
第2学期女生的比例 第2学期男生的比例 第3学期参考人数 第3学期女生的比例 第3学期男生的比例 第4学期参考人数 第4学期女生的比例 第4学期男生的比例 。。这里的表头需要根据学期来的 不能写死
得到的数据如A 2 20 50 50 40 25 75
B 3 16 50 50 30 50 50 10 50 50
C 1 10 50 50
数据要对应到学期里面去。 这里是列举只有4个学期 但是实际有30多
解决方案 »
- 请教Sql2000用语句导入Excel时,第一个工作表的写法..
- 请教各位高手:Access里怎样实现按分数段显示?
- ACCESS数据库中替换的问题
- 一个非常简单的问题,希望大家帮忙,关于数据库备份的命令,知道的朋友请进!!!
- 将MS SQL中的数据导入access中,怎样先将access中的数据先删除掉?
- 无法安装服务 SQL Server Reporting Service 请确定您有足够的权限
- 如何实现将表中的一条记录插入到另一个表中.(用sql语句实现)
- 新手用一百分求解 在线等结果
- 领导要我吹牛,不知道这个牛皮有没有吹大
- 在线等待,急急,如何用最好的办法将我的一个数据表中相同的记录删除,保留不同的记录,SQL语句怎么写?
- 再请大家帮忙解释一条sql
- 解析sql语句
没事 导出到EXCEL里面去 要给人家看
create table tb(学校 varchar(10), 学期 int, 参考人数 int, 女生 int, 男生 int)
insert tb select 'A', 1, 20, 10, 10
insert tb select 'A', 2, 40, 10, 30
insert tb select 'B', 1, 16, 8, 8
insert tb select 'B', 2, 30, 15, 15
insert tb select 'B', 3, 10, 5, 5
insert tb select 'C', 4, 10, 5, 5
go
declare @sql varchar(max),@collist1 varchar(max),@collist2 varchar(max)select
@collist1 = isnull(@collist1,'[共几个学期],[') + a.c1+ltrim(b.学期)+a.c2 + '],[',
@collist2 = isnull(@collist2,'[共几个学期],[') + a.c1+ltrim(b.学期)+a.c2 + ']=isnull([' + a.c1+ltrim(b.学期)+a.c2 + '],''''),['
from (
select c1 = '第', c2 = '学期参考人数' union all
select c1 = '第', c2 = '学期女生的比例' union all
select c1 = '第', c2 = '学期男生的比例'
) a ,(select distinct 学期 from tb) b order by b.学期set @collist1 = substring(@collist1,1,len(@collist1)-2)
set @collist2 = substring(@collist2,1,len(@collist2)-2)set @sql = '
with t1 as
(
select *,
女生比例 = cast(女生*100.0/参考人数 as decimal(10,2)),
男生比例 = cast(男生*100.0/参考人数 as decimal(10,2)),
共几个学期 = sum(1) over(partition by 学校)
from tb
)
,t2 as
(
select 学校, type = ''第''+ltrim(学期)+''学期参考人数'', 参考人数 = cast(参考人数 as varchar(10)) from t1
union all
select 学校, type = ''第''+ltrim(学期)+''学期女生的比例'', cast(女生比例 as varchar(10)) from t1
union all
select 学校, type = ''第''+ltrim(学期)+''学期男生的比例'', cast(男生比例 as varchar(10)) from t1
union all
select distinct 学校, type = ''共几个学期'', cast(共几个学期 as varchar(10)) from t1
)
select 学校,'+@collist2+' from t2 pivot (max(参考人数) for type in ('+@collist1+')) a'
exec(@sql)/*
学校 共几个学期 第1学期参考人数 第1学期女生的比例 第1学期男生的比例 第2学期参考人数 第2学期女生的比例 第2学期男生的比例 第3学期参考人数 第3学期女生的比例 第3学期男生的比例 第4学期参考人数 第4学期女生的比例 第4学期男生的比例
---------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- -------------------- --------------------
A 2 20 50.00 50.00 40 25.00 75.00
B 3 16 50.00 50.00 30 50.00 50.00 10 50.00 50.00
C 1 10 50.00 50.00(3 row(s) affected)
*/
楼主,记得结贴哦