姓名 数学 语文 1 2 3
1 张飞 60 61 姓名 张飞 赵云 庞统
2 赵云 80 85 变成 数学 60 80 99
3 庞统 99 80 语文 61 85 80
来个
追答明天给你回复
今天已经准备关机睡觉了
表原始数据:
SELECT * FROM temp;
XINGM YUWEN SHUXUE
张 60 61
赵 80 81
庞 90 91
SQL:
SELECT '语文' kemu,
SUM(decode(t.xingm, '张', t.yuwen, 0)) 张,
SUM(decode(t.xingm, '赵', t.yuwen, 0)) 赵,
SUM(decode(t.xingm, '庞', t.yuwen, 0)) 庞
FROM temp t
UNION
SELECT '数学' ,
SUM(decode(t.xingm, '张', t.shuxue, 0)) ,
SUM(decode(t.xingm, '赵', t.shuxue, 0)) ,
SUM(decode(t.xingm, '庞', t.shuxue, 0))
FROM temp t
查询结果:
KEMU 张 赵 庞
数学 61 81 91
语文 60 80 90
数据库有没有意义无所谓,我要的是这个改变的代码,主要是面试用的。
追答设原表为table1,新建表table2,取table1所有的id为table2字段名,类型为字符,取table1字段“姓名”下所有数据,全部转换为字符类型,插入table2,增加第一项为‘姓名’,去table1字段“数学”..同上类似,直至结束,
追问不是这样的,你这样就是重新建表了。我要的是使用游标或存储过程(不一定是什么)这样的方式来改变显示结果。表实际是不变的。
本节视频我们来聊一聊如何添加数据表的行与列。Treelab 官网:www.treelab.com.cn
同上的回答
追答你是要算分么?算分的话可以这样子写:
select 姓名,数学+语文 from table ;