我的存储过程如下:
...
declare @s nvarchar(4000)
set @s=''
select @s=@s+','+quotename(科目)+'=sum(case when 科目='+quotename(科目,'''')+'and 分数>='+cast(@Fenshu as nvarchar)+' then 1.0 else 0 end)/sum(case 科目 when '+quotename(科目,'''')+'then 100 end'  from student_cj group by 科目
exec('select 年级,班级'+@s+'from student_cj group by 年级,班级
以上的语句能够统计成绩的及格率如:0.6522222222。我希望是65.22%,我修改了几次都不成功,谢谢啦。

解决方案 »

  1.   

    declare @s nvarchar(4000)
    set @s=''
    select @s=@s+','+quotename(科目)+'=cast(sum(case when 科目='+quotename(科目,'''')+'and 分数>='+cast(@Fenshu as nvarchar)+' then 1.0 else 0 end)/sum(case 科目 when '+quotename(科目,'''')+'then 100 end as numeric(10,2))'  from student_cj group by 科目
    exec('select 年级,班级'+@s+'from student_cj group by 年级,班级
      

  2.   

    错了
    declare @s nvarchar(4000)
    set @s=''
    select @s=@s+','+quotename(科目)+'=cast(cast(100.0*sum(case when 科目='+quotename(科目,'''')+'and 分数>='+cast(@Fenshu as nvarchar)+' then 1.0 else 0 end)/sum(case 科目 when '+quotename(科目,'''')+'then 100 end as numeric(10,2)) as varchar(10))+''%'''  from student_cj group by 科目
    exec('select 年级,班级'+@s+'from student_cj group by 年级,班级