select 姓名,
sum(case when 科目='数学' then 成绩 else 0 end calse) *,
sum(case when 科目='语文' then 成绩 else 0 end calse) *,
sum(case when 科目='英语' then 成绩 else 0 end calse) *
from 表名 group by 姓名
sum(case when 科目='数学' then 成绩 else 0 end calse) *,
sum(case when 科目='语文' then 成绩 else 0 end calse) *,
sum(case when 科目='英语' then 成绩 else 0 end calse) *
from 表名 group by 姓名
解决方案 »
- 求关于行转列的SQL.
- 初学SQL...这样的简单的SQL...蛮有意思....
- 有请达人解释一下sql server 2005的每个数据类型
- 如何参照同一个服务器,不同数据库里的表
- 请问一般主/从式结构的数据库指的是哪些呢,谢谢
- 由于水平差,我的日期全部用字符型,如20050607这种格式,据说不好,可是全改太麻烦了,如何办?
- 求SQL语句
- 我有一万个手机串号,和仓库里十万个串号比较有没有重复的,为了加快速度,采用哪一种算法较好.
- A SP Problem...
- sql server 数据库无法附加,日志错误如何修复?
- 请教各位如何修改这段代码去除游标和将null值改为0。
- 紧急!请教一个海量数据查询问题。
goinsert into #t(姓名,科目,成绩)
select '张三','数学',89.5 union all
select '张三','语文',80 union all
select '张三','英语',79 union all
select '李斯','数学',85 union all
select '李斯','语文',65 union all
select '李斯','英语',87select * from #t
declare @sql varchar(8000)
set @sql=''
select @sql=@sql + ',[' + 科目 + ']=sum(case 科目 when ''' + 科目 + ''' then 成绩 else 0 end)'
from #t
group by 科目set @sql = 'select 姓名' + @sql + ' from #t group by 姓名'
select @sqlexec (@sql)
drop table #t
from
(select 姓名,
case when 科目='数学' then 成绩 else 0 end calse) as 数学,
case when 科目='语文' then 成绩 else 0 end calse) as 语文,
case when 科目='英语' then 成绩 else 0 end calse) as 英语
from 表名)
group by 姓名
sum(case 科目 when '数学' then 成绩 else 0 end calse) *,
sum(case 科目 when '语文' then 成绩 else 0 end calse) *,
sum(case 科目 when '英语' then 成绩 else 0 end calse) *
from 表名 group by 姓名
sum(case 科目 when '数学' then 成绩 else 0 end),
sum(case 科目 when '语文' then 成绩 else 0 end),
sum(case 科目 when '英语' then 成绩 else 0 end)
from 表名 group by 姓名