好贷网好贷款

一道数据库题目(交叉表的) 2fredrickhu]

发布时间:2016-12-3 14:48:38 编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"一道数据库题目(交叉表的) 2fredrickhu]",主要涉及到一道数据库题目(交叉表的) 2fredrickhu]方面的内容,对于一道数据库题目(交叉表的) 2fredrickhu]感兴趣的同学可以参考一下。

1 语文 90 1 数学 60 1 英语 80 2 语文 95 2 数学 65 2 英语 85 3 语文 96 3 数学 66 3 英语 86 这是数据 Transform sum(成绩) as cc select 编号 from coss group by 编号 Pivot 科目 这是我写的语句  老是报错  请各位高手帮帮忙啊  给积分

说的不清不楚的。没看懂,我给你发个看看是不是你要的结果 有一表是这样的:  表1:  序号 名称  数学  语文 英语 历史 地理 政治  日期  1  张无  80  90  90  80  90  90  1月  2  张无  70  90  50  80  60  80 2月  3  张无  80  90  80  60  80  60  3月  4  张六  80  90  90  80  90  90  1月  5  张六  70  90  50  80  60  80 2月  6  张六  80  90  80  60  80  60  3月  7  张起  80  90  90  80  90  90  1月  8  张起  70  90  50  80  60  80 2月  9  张起  80  90  80  60  80  60  3月  转换成如下:  序号  名称  课程    1月    2月  3月  1    张无  数学    80    70    80  2    张无  语文    90    90    90  3    张无  英语    90    50    80  4    张无  历史    80    80    60  5    张无  地理    90    60    80  6    张无  政治    90    80    60  7    张六  数学    80    70    80  8    张六  语文    90    90    90  9    张六  英语    90    50    80  10  张六  历史    80    80    60  11  张六  地理    90    60    80  12  张六  政治    90    80    60  13  张起  数学    80    70    80  14  张起  语文    90    90    90  15  张起  英语    90    50    80  16  张起  历史    80    80    60  17  张起  地理    90    60    80  18  张起  政治    90    80    60  create table tb(序号 int,名称 varchar(10), 数学 int, 语文 int,英语 int,历史 int, 地理 int,政治 int, 日期 varchar(10)) insert into tb values(1 , '张无' , 80 , 90 , 90 , 80 , 90 , 90 , '1月')  insert into tb values(2 , '张无' , 70 , 90 , 50 , 80 , 60 , 80 , '2月')  insert into tb values(3 , '张无' , 80 , 90 , 80 , 60 , 80 , 60 , '3月')  insert into tb values(4 , '张六' , 80 , 90 , 90 , 80 , 90 , 90 , '1月')  insert into tb values(5 , '张六' , 70 , 90 , 50 , 80 , 60 , 80 , '2月')  insert into tb values(6 , '张六' , 80 , 90 , 80 , 60 , 80 , 60 , '3月')  insert into tb values(7 , '张起' , 80 , 90 , 90 , 80 , 90 , 90 , '1月')  insert into tb values(8 , '张起' , 70 , 90 , 50 , 80 , 60 , 80 , '2月')  insert into tb values(9 , '张起' , 80 , 90 , 80 , 60 , 80 , 60 , '3月') go select 名称 , 课程 ,   max(case 日期 when '1月' then score else 0 end) [1月],   max(case 日期 when '2月' then score else 0 end) [2月],   max(case 日期 when '3月' then score else 0 end) [3月] from ( select 名称 , '数学' 课程, 数学 score , 日期 from tb union all select 名称 , '语文' 课程, 语文 score , 日期 from tb union all select 名称 , '英语' 课程, 英语 score , 日期 from tb union all select 名称 , '历史' 课程, 历史 score , 日期 from tb union all select 名称 , '地理' 课程, 地理 score , 日期 from tb union all select 名称 , '政治' 课程, 政治 score , 日期 from tb ) t group by 名称 , 课程 order by 名称 , 课程 drop table tb   你根据这个例子看下吧,或许有点效果  

用povit

select * from 表 pivot (sum(score)  for km in ([语文],[数学],[英语]) ) as pt

上一篇:sql语句的优化问题 20sed0sukan]
下一篇:如果取小数点后的取数问题 5tengdacom]

相关文章

相关评论