我的存储过程如下:
...
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%,我修改了几次都不成功,谢谢啦。
...
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%,我修改了几次都不成功,谢谢啦。
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 年级,班级
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 年级,班级