关于数据库表的操作 5

将表1改变为表2表1:ID姓名语文数学英语1张三8090702李四9085953王五887590表2:ID姓名科目成绩1张三语文802张三数学903张三英语704李四语文... 将表1 改变为表2
表1:
ID 姓名 语文 数学 英语
1 张三 80 90 70
2 李四 90 85 95
3 王五 88 75 90

表2:
ID 姓名 科目 成绩
1 张三 语文 80
2 张三 数学 90
3 张三 英语 70
4 李四 语文 90
5 李四 数学 80
6 李四 英语 99
7 王五 语文 85
8 王五 数学 96
9 王五 英语 88

高手 我跪求了
展开
 我来答
jim_lian
2012-06-25 · TA获得超过751个赞
知道小有建树答主
回答量:296
采纳率:100%
帮助的人:130万
展开全部
1) 创建表2的表结构 (ID设为整形, 自增长)
2) 将表1数据导入表2, (分3次, 分别对应语文, 英语, 数学):

INSERT INTO 表2
(姓名, 科目, 成绩) (SELECT 姓名, '语文', 语文 FROM 表1)

INSERT INTO 表2
(姓名, 科目, 成绩) (SELECT 姓名, '数学', 数学 FROM 表1)

INSERT INTO 表2
(姓名, 科目, 成绩) (SELECT 姓名, '英语', 英语 FROM 表1)
美林数据技术股份有限公司
2019-06-26 广告
美林数据Tempo大数据分析平台,它是一款集数据接入、数据处理、数据挖掘、数据可视化、数据应用于一体的软件产品。它秉持“智能、互动、增值”的设计理念,面向企业级用户提供自助式数据探索与分析能力,为企业提供从BI到AI的一体化数据分析与应用解... 点击进入详情页
本回答由美林数据技术股份有限公司提供
Andyllddyy
2012-06-24 · TA获得超过410个赞
知道小有建树答主
回答量:202
采纳率:50%
帮助的人:61.9万
展开全部
这个不难 我用Oracle给你写了
第一个表:
create table table1(ID int not null primary key,姓名 char(10),语文 int,数学 int,英语 int);
insert into table1 values(1,'张三',80,90,70);

第二个表:
create table table2(ID int not null primary key,姓名 char(10),科目 char(10),成绩 (10));
把你的表内容插进去就OK了 看了一下 你这的ID是按顺序自增的 其实可以写一个触发器 不过有点麻烦 就给你写这些了
追问
我的意思是表1我已经建好了 我是将表一的 输出成表二的形式
追答
好吧 这个等高手帮你解决吧 貌似自增长不需要触发器 你看看下面的语法吧 

关于id自增功能,也很简单,而且比较灵活。
(1)首先建立一个序列(就是每次查询会自动增加值的绝不重复的对象,比如每次加1或每次加10)。语法:
CREATE SEQUENCE 序列名
[INCREMENT BY n] --每次加几
[START WITH n] --序列从几开始
[{MAXVALUE/ MINVALUE n|NOMAXVALUE}] --最小值、最大值的限制
比如CREATE SEQUENCE s_test start with 1 increment by 1; --就是建立了额一个从1开始每次加1的序列。
访问序列时,用 序列名称.nextval的语法。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ERP小V
2012-06-27 · TA获得超过1257个赞
知道小有建树答主
回答量:1021
采纳率:82%
帮助的人:285万
展开全部
你看下我下边这个例子(已验证后正确的),希望对你有帮助。如题:例如我有一个表tb_A(编号,姓名,学科,分数)记录如下:001 小李 数学 100001 小李 语文 88001 小李 英语 99002 小张 数学 60002 小张 语文 60002 小张 英语 60现实结果是:字段名: 编号 姓名 数学 语文 英语 001 小李 100 88 99 001 小张 60 60 60 解决方法:IF NOT OBJECT_ID('成绩表') IS NULL DROP TABLE 成绩表GOCREATE TABLE [成绩表] ([编号] NVARCHAR(10),[姓名] NVARCHAR(10),[学科] NVARCHAR(10),[分数] INT)GOINSERT INTO [成绩表] SELECT N'001',N'小李',N'数学',100 UNION SELECT N'001',N'小李',N'语文',88 UNION SELECT N'001',N'小李',N'英语',99 UNION SELECT N'002',N'小张',N'数学',60 UNION SELECT N'002',N'小张',N'语文',60 UNION SELECT N'002',N'小张',N'英语',60 DECLARE @Sql NVARCHAR(4000)SET @Sql = ''SELECT @Sql = @Sql + ',' + QUOTENAME([学科]) + '=MAX(CASE WHEN [学科]=' + QUOTENAME([学科], '''') + ' THEN [分数] ELSE 0 END)'FROM 成绩表GROUP BY [学科]EXEC ('SELECT [编号], [姓名]' + @SQL + ' FROM [成绩表] GROUP BY [编号], [姓名]')
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式