日期:2014-05-18  浏览次数:20391 次

请大家帮忙一个sql语句
语句如下:

SELECT
case   grouping(t_s_name)  
when   0   then   t_s_name
when   1   then   '合计 '
end   as   姓名,
    t_result.t_r_result   as   成绩,   AVG(t_result.t_r_result)   AS   平均成绩
FROM   t_student   INNER   JOIN
            t_result   ON   t_student.t_s_studentno   =   t_result.t_r_studentno
GROUP   BY   t_s_name,   t_result.t_r_result   with   rollup  


生成的结果:
李如龙                             94.5 94.500000
李如龙                             NULL 94.500000
王清                                 89.5 89.500000
王清                                 92.0 92.000000
王清                                 NULL 90.750000
朱研                                 78.0 78.000000
朱研                                 NULL 78.000000
合计                                 NULL 88.500000

我想把每个人的小计这行的名字换成小计,就像下面这样:
李如龙                             94.5 94.500000
小计                             NULL 94.500000
王清                                 89.5 89.500000
王清                                 92.0 92.000000
小计                                 NULL 90.750000
朱研                                 78.0 78.000000
小计                                 NULL 78.000000
合计                                 NULL 88.500000

有什么办法吗,请大家帮忙。

------解决方案--------------------
改为:
select case when grouping(t_result.t_r_result)=1 then '小计 '
when grouping(t_result.t_r_result)=1 and grouping(t_s_name)=1 then '合计 '
else t_s_name end as 姓名