邹建写的语句,我初学水平太——执行不了,谁来帮我看看,只有60分了!!!
yexd1 2005-03-18 03:45:58 我得问题是关于成绩统计的,问题描述:我的成绩表是这样的[学号 姓名 年级 班级 科目 考试类型 分数],如果要统计某一科的成绩是没有问题的,但统计某班各科的成绩时遇到了一个问题:假设我要统计一年级三班各科的及格率的情况,但是我根本不知道一年级三班有几科(在成绩表里面),对于这种统计字段的数目不清楚的情况下怎么办呢?比如 select @x1,@x2,@x3,@xi from .....此时[i]的值不确定,我怎么确定我的传递参数呢?
邹建的回答:(我执行不了,帮我看看)
如果从成绩表取科目,可以用动态语句
declare @s nvarchar(4000)
set @s=''
select @s=@s+','+quotename(科目)+'=max(case 科目 when '+quotename(科目,'''')+' then 成绩 end)'
from 成绩表
where 班级='xx'
group by 科目
exec('select 学号'+@s+'
from 成绩表
where 班级=''xx''
group by 学号')