请大家帮忙一个sql语句

panyijun 2007-01-10 03:48:39
语句如下:

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

有什么办法吗,请大家帮忙。
...全文
221 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
panyijun 2007-01-10
  • 打赏
  • 举报
回复
update tablename set 姓名='小计' where 成绩 is null and 姓名<>'合计'
好像 update 不能更新虚拟表,如果可以麻烦大家告诉我
panyijun 2007-01-10
  • 打赏
  • 举报
回复
SELECT
case
when grouping(t_result.t_r_result)=1 and grouping(t_s_name)=1 then '合计'
when grouping(t_result.t_r_result)=1 then '小计'
else t_s_name 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
看过了,要这样才能显示合计,sql判断时符合第一个条件就执行了,谢谢大家了。
中国风 2007-01-10
  • 打赏
  • 举报
回复
改为:
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 姓名
中国风 2007-01-10
  • 打赏
  • 举报
回复
SELECT
case grouping(t_s_name)
when 0 then t_s_name
when 1 then '合计'
end
caixia615 2007-01-10
  • 打赏
  • 举报
回复
update tablename set 姓名='小计' where 成绩 is null and 姓名<>'合计'

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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