• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >MsSql > 玩转-SQL2005数据库行列转换

玩转-SQL2005数据库行列转换

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了sql2005数据库下载,sql2005数据库,sql2005数据库备份,sql2005附加数据库,sql2005数据库还原等相关知识,希望本文的分享对您有所帮助

注意:列转行的方法可能是我独创的了,呵呵,因为在网上找不到哦,全部是我自己写的,用到了系统的SysColumns

(一)行转列的方法

先说说行转列的方法,这个就比较好想了,利用拼sql和case when解决即可

实现目的

 

1:建立测试用的数据库

insert into RowTest values ('李四','语文','81')
insert into RowTest values ('李四','数学','82')
insert into RowTest values ('李四','英语','83')
insert into RowTest values ('李四','生物','84')
insert into RowTest values ('李四','物理','85')
insert into RowTest values ('李四','化学','86')

insert into RowTest values ('小生','语文','71')
insert into RowTest values ('小生','数学','72')
insert into RowTest values ('小生','英语','73')
insert into RowTest values ('小生','生物','74')
insert into RowTest values ('小生','物理','75')
insert into RowTest values ('小生','化学','76')
</div>

3:设计想法

  行转列的原理就是把行的类别找出来当做查询的字段,利用case when 把当前的分数加到当前的字段上去,最后用group by 把数据整合在一起

4:通用方法

set @sql=@sql+' from RowTest group by Name order by Name'

print @sql
exec(@sql)
</div>

说明: 把所有的课程名称取出来作为列(查询表TCourse)

        用case when 的方法把sql 拼出来

5:课外试验

(1)加入数据

去除max 方法会报错,因为一条可能对应多行数据

(2)加入数据

数据会多出一列,但是其他人无此课程就会为0

至此,数据行转列ok

(二)列转行的新方法开始了

实现目的

1:实现原理

在网上看了别人的做法,基本都是用union all 来一个个转换的,我觉得不太好用。

首先我想到了要把所有的列名取出来,就在网上查了下获取表的所有列名

 然后我可以把主表和列名形成的表串起来,这样就可以形成需要的列数,然后根据判断取值就完成了了,呵呵

2:建立表格

Col的name 直接取得分数

</div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • SQL2005查看死锁存储过程sp_who_lock
  • Win2008中安装的MSSQL2005后无法访问的解决方法
  • sql2005附加数据库操作步骤(sql2005还原数据库)
  • SQL2005中char nchar varchar nvarchar数据类型的区别和使用环境讲解
  • 玩转-SQL2005数据库行列转换
  • 收缩数据库日志文件的方法(仅适用于mssql2005)
  • SQL2005利用ROW_NUMBER() OVER实现分页功能
  • mssql2005数据库镜像搭建教程
  • sql2005 附加数据库出错(错误号:5123)解决方法
  • mssql2005字符串连接方法 避免无效的连接错误

相关文章

  • 2017-05-11正解SQLSEVER 2005 sql排序(按大小排序)
  • 2017-05-11sqlserver2008锁表语句详解(锁定数据库一个表)
  • 2017-05-11分页存储过程(一)使用sql2005的新函数构造分页存储过程
  • 2017-05-11SqlServer 2005/2008数据库被标记为“可疑”的解决办法
  • 2017-05-11SQLServer2008的实用小道具 merger使用介绍
  • 2017-05-11SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值
  • 2017-05-11Sql server2005 优化查询速度50个方法小结
  • 2017-05-11SQL2005 服务器因重装改名后出错的说明
  • 2017-08-07SQL的四种连接-左外连接、右外连接、内连接、全连接、交叉连接
  • 2017-05-11SQL Server2008中删除重复记录的方法分享

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • sql server 2005用户权限设置深入分析
    • SQL2005学习笔记 APPLY 运算符
    • SQL Server 2008+ Reporting Services (SSRS)使用USER登录问题
    • 安装SQL2005时出现的版本变更检查SKUUPGRADE=1问题的解决方法
    • 基于SQL2005 SQL2008 表结构信息查询升级版的详解(含外键信息)
    • SQL Server触发器的使用
    • SQL Server 2008 安装SQLDMO.dll的方法
    • SqlServer2008误操作数据(delete或者update)后恢复数据的方法
    • SQL Server 2008 R2安装配置方法图文教程
    • MSSQL 大量数据时,建立索引或添加字段后保存更改提示超时的解决方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有