declare @s varchar(8000)
set @s='select 科目'
select @s=@s+',['+姓名']=sum(case 姓名 when '''+姓名+''' then 分数 else 0 end)'
from tablename group by 姓名
exec(@s+'from tablename group by 科目')
set @s='select 科目'
select @s=@s+',['+姓名']=sum(case 姓名 when '''+姓名+''' then 分数 else 0 end)'
from tablename group by 姓名
exec(@s+'from tablename group by 科目')
解决方案 »
- sql server 查询 帮忙看看
- Microsoft SQL Server Management Studio 中如何创建存储过程
- 问一个关于触发器的问题
- 如何使用触发器进行递归删除
- 这个 Sql可以用 DISTINCT实现吗
- 插入新的数据时怎么不插入重复的项!!!
- 执行效率问题
- 100分送上,求在ERWIN4.0中显示中文的问题
- 关于SQLServer同步的难题
- 生产数据库,部分工序比较卡!清空一下缓存就好了.........
- 200万的数据怎么才能统计出来呢?有什么好的办法吗?
- 如何查询一个SqlServer数据库表的所有唯一约束?exec sp_helpconstraint tablename?
create table k(科目 varchar(50),分数 int,姓名 varchar(50))
insert k select '语文',88,'董兆'
union all select '数学',95,'董兆'
union all select '英语',89,'董兆'
union all select '语文',69,'婵娟'
union all select '数学',95,'婵娟'
union all select '英语',89,'婵娟'
union all select '语文',69,'李慧'
union all select '数学',95,'李慧'
union all select '英语',89,'李慧'declare @s varchar(8000)
set @s='select 科目'
select @s=@s+',['+姓名+']=sum(case 姓名 when '''+姓名+''' then 分数 else 0 end)'
from k group by 姓名
exec(@s+'from k group by 科目')
,然后使用 lxzm1001(*蓝星之梦*) 的方法。
因为每一个人在同一个科目只有一个成绩(根据科目分组)所以 sum /max等都是可以的。
的代码不错~
set @s='select 科目'
select @s=@s+',['+姓名']=max(case 姓名 when '''+姓名+''' then 分数 else 0 end)'
from tablename group by 姓名
exec(@s+'from tablename group by 科目')