CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  应用实例

如何将表的横数据转换为纵数据

楼主lanbaibai(蓝白白)2004-12-04 00:14:50 在 MS-SQL Server / 应用实例 提问

欲将如下相互表格转换:  
   
  表格一:  
   
                        第一学期       第二学期  
  姓名   性别   语文   数学       语文   数学     音乐   .....  
  张三     男       85       70  
  李四     女       89       90  
  ........  
   
  表格二:  
   
  姓名   性别   学期     科目     得分    
  张三     男       一       语文     85  
  张三     男       一       数学     70  
  张三     男       二       语文     85  
  张三     男       二       数学     70  
  李四     女       一       语文     89  
  李四     女       一       数学     90  
  李四     女       二       语文     89  
  李四     女       二       数学     90  
   
  应该如何处理?  
   
  谢谢  
   
  问题点数:20、回复次数:7Top

1 楼lanbaibai(蓝白白)回复于 2004-12-05 00:23:39 得分 0

怎么没人知道吗?Top

2 楼ropriest(馆主)回复于 2004-12-05 00:45:22 得分 0

表格1里面也应该有学期这个字段吧,你这是报表还是数据库表结构啊?Top

3 楼djkhym(兵卒)回复于 2004-12-05 09:46:08 得分 10

create   table   #tmp(id   int   identity(1,1),name   varchar(10),sex   varchar(4),period   varchar(2),  
  subject   varchar(10),credit   float)  
   
  insert   into   #tmp(name,sex,period,subject)  
  select   姓名   as   name,性别   as   sex,学期   as   period,语文1   as   subject  
   
  insert   into   #tmp(name,sex,period,subject)  
  select   姓名   as   name,性别   as   sex,学期   as   period,数学1   as   subject  
  .......后面相似  
  最后从临时表中提取数据  
  select   *   from   #tmp  
  Top

4 楼taoyb(tyb)回复于 2004-12-05 10:27:03 得分 0

只能用   select   name,sex,学期,语文   as   科目   insert   into   #temp1  
                union    
              ....................  
   
  Top

5 楼wjwboy(王建)回复于 2004-12-05 11:43:26 得分 0

 
  create   table   aa   (bb   int,cc   int   ,b1   char(8))  
  go  
   
  select   *   from   aa  
  go  
  --------------------  
  11 2 bbb            
  11 1 aaa            
  12 1 uio            
  12 2 klj            
  --------------------  
   
  select     bb,   max(case   cc   when   1   then   b1   else   ''   end   ),max(case   cc   when   2   then   b1   else   '   '   end)   from   aa  
  group   by   bb  
  go  
   
  ---------------------  
  11 aaa           bbb            
  12 uio           klj            
  ---------------------  
  Top

6 楼aohan(aohan)回复于 2004-12-05 11:52:52 得分 0

老大写过这样的贴子,找一下就可以了Top

7 楼631799(杭州工人)回复于 2004-12-05 14:36:39 得分 10

declare   @s   varchar(8000)  
  set   @s=''  
  select   @s=@s+',['+科目+']=max(case   科目   when   '''+科目+'''   then   得分   end)'  
  from   表   group   by   科目   order   by   科目   desc  
  exec('select   姓名,性别+@s+'  
  from   表  
  group   by   姓名,性别)  
  goTop

相关问题

  • 数据库表的行数据到列数据的转换
  • PB 和表数据转换问题
  • 数据表格式的转换
  • 数据转换的报表问题!
  • 如何将excel中的数据表转换成Access数据表?
  • 数据转换
  • 数据转换!!!!!!!!!!
  • 用SQL的数据转换工具把SQL的数据库转换为Access的数据库发现转换后Access的数据表没了主键。
  • 用java怎样实现oracle数据库表和excel数据表的转换
  • 怎样将交叉表的数据转换成EXECL表

关键词

  • 学期
  • 数学
  • 数据
  • 科目
  • 表格
  • 语文
  • sex
  • period
  • 性别
  • 姓名

得分解答快速导航

  • 帖主:lanbaibai
  • djkhym
  • 631799

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo