SQL数据表转换

来源:百度知道 编辑:UC知道 时间:2024/06/18 14:37:39
我有一个表
学号 语文 数学 英语
01 98 97 96
经高手指点,需要转换成
学号 科目 成绩
01 01 98
01 02 97
01 03 96
表中已经有了很多数据,重做太麻烦,怎样可以把原有数据直接转换过来,怎样编写查询语句

select 学号,'01' as 科目, 语文 as 成绩 from 表
union
select 学号,'02' as 科目, 数学 as 成绩 from 表
union
select 学号,'03' as 科目, 英语 as 成绩 from 表

原有表A 学号 语文 数学 英语

新表B 学号 科目 成绩

直接在数据库建好B表,然后在数据库上执行SQL文,
将A表数据导入B表

INSERT INTO B(学号, 科目, 成绩)
SELECT 学号, 科目, 成绩
FROM ((SELECT 学号,"01" AS 科目, 语文 AS 成绩 FROM A) 1
INNER JOIN (SELECT 学号,"02" AS 科目, 数学 AS 成绩 FROM A) 2
ON 2.学号=1.学号
INNER JOIN (SELECT 学号,"03" AS 科目, 英语 AS 成绩 FROM A) 3
ON 3.学号=1.学号)

1、select 学号,语文 from tablename;
2、将查询出来的数据插入数据库,科目字段直接写成01;
3、重复1,2的操作步骤把数学和英语的数据写入数据库。

用交叉表查询可以实现
Transform SUM(cjb.成绩)AS 成绩 SELECT cjb.学号 FROM cjb GROUP BY cjb.学号 Pivot "T" & cjb.科目