搭建论坛《搭建之星》论坛数据库交流 → 如何实现数据表行列转置?


  共有3312人关注过本帖树形打印

主题:如何实现数据表行列转置?

美女呀,离线,留言给我吧!
sgm68
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:发烧友 帖子:80 积分:530 威望:0 精华:0 注册:2009-1-5 10:54:56
如何实现数据表行列转置?  发帖心情 Post By:2010-1-1 13:01:54

我想将一个数据表的字段变为记录,将记录变为字段,怎么才能实现?我一直找不到办法,请求老师们指点

 

例:

 

  ID    姓名    数学   物理

  1      AA      95     98

  2      BB      86     90

 

转换后

 

   ID        1            2

   姓名     AA          BB

   数学     95           86

   物理     98           90


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
玩脑者
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 搭建亲友团
等级:版主 帖子:1152 积分:7690 威望:0 精华:1 注册:2008-7-5 1:22:45
  发帖心情 Post By:2010-1-2 15:01:11

1、如果不编辑,用数据浏览构件

2、用“数组网格”来实现你要的数据显示方式,可以写入也可以编辑。



http://hi.baidu.com/onenower
支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
xbzx
  3楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:爱好者 帖子:57 积分:366 威望:0 精华:0 注册:2010-4-6 0:54:34
  发帖心情 Post By:2010-4-22 9:10:04

你变这有什么意思?

一个表是横着看的,你非要竖着看。

 


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
x123992009
  4楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:设计员 帖子:370 积分:2135 威望:0 精华:0 注册:2009-2-6 23:10:47
  发帖心情 Post By:2010-4-22 18:07:53

晕呼呼.你建表的时候,,按你需要的显示来建了,,不要横的就是了,,

 

 

或者做个临时表,,把要显示的数据转换一下到临时表,在临时表中显示了.....


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
星星之火
  5楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:学员 帖子:14 积分:71 威望:0 精华:0 注册:2012-12-16 21:59:10
  发帖心情 Post By:2012-12-16 23:49:27

其目的就是将数据交*汇总后进行查看,如高手有事例最好发出来共享下。

支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
goto286
  6楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:发烧友 帖子:96 积分:762 威望:0 精华:0 注册:2009-11-29 18:12:39
  发帖心情 Post By:2012-12-17 2:32:11

ADO数据表构件,可以通过字段“编号”进行数据操作;

这种数据表的转换,还是很容易实现的。


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部
帅哥哟,离线,有人找我吗?
萝卜特二
  7楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信 九五二七
等级:技师 帖子:162 积分:1061 威望:0 精华:0 注册:2012-3-4 13:16:44
  发帖心情 Post By:2013-4-6 16:38:14

--修改表名称
EXEC sp_rename 旧表名,新表名
--修改表字段名称
EXEC sp_rename '表.旧字段','新字段','COLUMN'
--修改表字段类型
alter table 表 alter column 字段 类型(如:int)
--查询当前数据库名
select name from [master].[dbo].[sysdatabases] Where DbId=(Select Dbid From [Master].[dbo].[SysProcesses] Where Spid = @@spid)
--查询表的字段
select * from Sys.syscolumns where id=object_id('表')
--查询是否存在用户表
if exists(select * from sys.sysobjects where id=object_id('表名') and objectproperty(id,N'IsUserTable')=1)
print 'exists'

 

 

SQL语句之普通行列转换     
      
  假设有张学生成绩表(tb_rowtocol)如下   
  Name   Subject   Result   
  张三   语文  73   
  张三   数学  83   
  张三   物理  93   
  李四   语文  74   
  李四   数学  84   
  李四   物理  94   
    
  想变成     
  姓名   语文   数学   物理   
  张三   73  83  93   
  李四   74  84  94   
    
  declare   @sql   varchar(4000)   
  set   @sql   =   'select   Name   as   '   +   '姓名'   
  select   @sql   =   @sql   +   '   ,   sum(case   Subject   when   '''+Subject+'''   then   Result   end)   ['+Subject+']'   
  from   (select   distinct   Subject   from   rowtocol)   as   a   
  set   @sql   =   @sql   +   '   from   rowtocol   group   by   name'   
  exec(@sql)     
      
  如果上述两表互相换一下:即   
  表名(cj)   
  姓名   语文   数学   物理   
  张三   73  83  93   
  李四   74  84  94  

 

============跟我上次问的交*表差不多


支持(0中立(0反对(0单帖管理 | 引用 | 回复 回到顶部

返回版面帖子列表

如何实现数据表行列转置?








签名