求 一个delphi sql查询语句

有一个数据表(dtt)结构如下(课程数是不确定的,可能后面还有其他的):姓名课程成绩王蓝琏英语76王蓝琏语文65王蓝琏数学65李星颜英语86李星颜语文54李星颜数学76叶... 有一个数据表(dtt)结构如下(课程数是不确定的,可能后面还有其他的):
姓名 课程 成绩
王蓝琏 英语 76
王蓝琏 语文 65
王蓝琏 数学 65
李星颜 英语 86
李星颜 语文 54
李星颜 数学 76
叶梦雪 英语 56
叶梦雪 语文 88
叶梦雪 数学 86
朱紫云 数学 64
朱紫云 英语 88

现在查询得出的数据表(rrt)如下:
姓名 语文 数学 英语 总计
王蓝琏 65 65 76 206
李星颜 54 76 86 216
叶梦雪 88 86 56 230
朱紫云 64 88 152

这个 查询语句是怎么写的?还有这server中sql存储语句是怎么写的呢,谢谢各位了哈
展开
 我来答
Sharon_QQ
2008-11-18 · TA获得超过492个赞
知道小有建树答主
回答量:362
采纳率:0%
帮助的人:374万
展开全部
sqlserver2005下测试成功!

declare @sql varchar(8000)
set @sql=''

select @sql=@sql+','+rtrim(课程)+'=(SELECT isnull(SUM(case b.课程 when '''+课程+''' then ISNULL(b.成绩,0) end ),0) FROM ddt b where b.姓名=t.姓名)'
from ddt
group by 课程
order by 课程

set @sql='select t.姓名 AS 姓名 '+@sql+' , SUM(t.成绩) AS 总计 from ddt t group by t.姓名 '
exec(@sql)
哉瑛宠171
2008-11-18 · TA获得超过770个赞
知道小有建树答主
回答量:288
采纳率:0%
帮助的人:310万
展开全部
给你个模板学习!!
学生编号 学生姓名 科别 分数
1083 张三 语文 75
1083 张三 数学 84
1083 张三 英语 92
1084 李四 语文 84
1084 李四 数学 93
1084 李四 英语 87

怎么得出如下的表
学生编号 学生姓名 语文 数学 英语
1083 张三 75 84 92
1084 李四 84 93 87

答案:
Select 学生编号,学生姓名,sum(case when 科别=’语文’ then 分数 else 0 end) as 语文,sum(case when 科别=’数学’ then 分数 else 0 end) as 数学,sum(case when 科别=’英语’ then 分数 else 0 end) as 英语 from A group by 学生编号,学生姓名
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
charlif
2008-11-18 · TA获得超过231个赞
知道小有建树答主
回答量:381
采纳率:0%
帮助的人:0
展开全部
--SQL SERVER 2000 动态SQL。
declare @sql varchar(8000)
set @sql = 'select 姓名 '
select @sql = @sql + ' , max(case 课程 when ''' + 课程 + ''' then 成绩 else 0 end) [' + 课程 + ']'
from (select distinct 课程 from dtt) as a
set @sql = @sql + ' , cast(avg(成绩*1.0) as decimal(18,2)) 平均分 , sum(成绩) 总分 from dtt group by 姓名'
exec(@sql)

--SQL SERVER 2005 动态SQL。
declare @sql varchar(8000)
select @sql = isnull(@sql + ',' , '') + 课程 from dtt group by 课程
exec ('select m.* , n.平均分 , n.总分 from
(select * from (select * from dtt) a pivot (max(成绩) for 课程 in (' + @sql + ')) b) m ,
(select 姓名 , cast(avg(成绩*1.0) as decimal(18,2)) 平均分 , sum(成绩) 总分 from dtt group by 姓名) n
where m.姓名 = n.姓名')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式