请问一个查询,谢谢解答!

gang75vb 2003-08-25 03:58:51
学生考试信息表

姓名 科目 分数
---------------------
王五 语文 80
王五 数学 90
张三 语文 70
张三 数学 85


怎样查询才能达到下面的结果

语文 数学
----------------------
王五 80 90
张三 70 85


谢谢解答!
...全文
96 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gang75vb 2003-08-27
  • 打赏
  • 举报
回复
declare @s varchar(3000)
select distinct 科目 into #t from 学生考试信息表
set @s = 'select 姓名'
select @s = @s + ',sum(case when 科目 ='''+ 科目 + ''' then 分数 else 0 end) as [' +科目+']' from #t order by 科目
set @s = @s + ' from 学生考试信息表 group by 姓名'
drop table #t
exec (@s)
---通过 谢谢
CrazyFor 2003-08-25
  • 打赏
  • 举报
回复
参考:
create table #(a varchar(100),b int)
insert # values('aa',11)
insert # values('bb',1)
insert # values('aa',45)
insert # values('cc',81)
insert # values('a',11)
insert # values('aay',561)
insert # values('a',14)

declare @sql varchar(8000)
set @sql = 'select '
select @sql = @sql + 'sum(case a when '''+a+'''
then b else 0 end) '+a+'的数量,'
from (select distinct a from #) as a

select @sql = left(@sql,len(@sql)-1) + ' from #'

exec(@sql)

drop table #
愉快的登山者 2003-08-25
  • 打赏
  • 举报
回复
declare @s varchar(3000)
select distinct 科目 into #t from table1
set @s = 'select 姓名'
select @s = @s + ',sum(case when 科目 ='''+ 科目 + ''' then 分数 else 0 end) as [' +科目+']' from #t order by 科目
set @s = @s + ' from talbe1 group by 姓名'
exec (@s)


愉快的登山者


◢◣◢◣◢◣
happydreamer 2003-08-25
  • 打赏
  • 举报
回复
select 姓名,
sum(case when 科目 = '语文' then 分数 else 0 end) as 语文,
sum(case when 科目 = '数学' then 分数 else 0 end) as 数学
from 学生考试信息表
group by 姓名
dafu71 2003-08-25
  • 打赏
  • 举报
回复
select 姓名, sum(case when 科目='语文' then 分数 end) as 语文 , sum(case when 科目='数学' then 分数 end) as 数学 from 学生考试信息表 group by 姓名
txlicenhe 2003-08-25
  • 打赏
  • 举报
回复
Select 姓名,sum(case when 科目 = '语文' then 分数 else 0 end) as 语文,
sum(case when 科目 = '数学' then 分数 else 0 end) as 数学
from 学生考试信息表 group by 姓名

lynx1111 2003-08-25
  • 打赏
  • 举报
回复
up
txlicenhe 2003-08-25
  • 打赏
  • 举报
回复
Select 姓名,sum(case when 科目 = '语文' then 分数 else 0 end) as 语文,
sum(case when 科目 = '数学' then 分数 else 0 end) as 数学
from 学生考试信息表 group by 姓名

pengdali 2003-08-25
  • 打赏
  • 举报
回复
declare @sql varchar(8000)
set @sql = 'select 姓名'
select @sql = @sql + ',sum(case 科目 when '''+科目+''' then 分数 end) ['+科目+']'
from (select distinct 科目 from 学生考试信息表) as a
select @sql = @sql+' from 学生考试信息表 group by 姓名'

exec(@sql)
go

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧