SQL知识点之列转行Unpivot函数_数据库其它

来源:脚本之家  责任编辑:小易  

DECLARE@M INTEXEC PROC4 1,2,@M OUTPUTSELECT@MSET@M=30SELECT@M在Sqlserver2008上调试需要将@M设为 OUTPUT,才有返回值.否则SELECT@M结果为NULLwww.zgxue.com防采集请勿采集本网。

前言

这是总结SQL知识点的第二篇文章,一次只总结一个知识点,尽量说明白。上次我们谈到行转列,用的是Pivot函数,这次我们来谈谈Unpivot函数。(这里是用的数据库是SQLSERVER,与其他数据库是类似的,大家放心看就好)

没细看,觉得应该用查询就能解决

先看一个小问题CustomerCustomer

-删除列 ALTER TABLE 表名 DROP COLUMN column_b 知识点衍生 A.添加新列 ALTER TABLE 表名 ADD 列名 VARCHAR(20) B.修改列名 EXEC sp_rename 'dbo.表名.列名','新列名','COLUMN' C.更改列的数据

在这张图中,表示的是顾客用不同手机号给Phone1、Phone2、Phone3拨打电话的情况,但是机灵的你,想变个花样来看看,比如下面这样的。

你这样把SQL语句都暴露到客户端,到时候随便一个懂点sql知识的人都有可能给你把数据库毁了。你要自己测试着玩无所谓,要是做项目的话,那还是算了吧!

UnpivotUnpivot

应届一般都是建表,增,删,改,查,排序,分组,升序,降序,表连接(左右),有工作经验那就要求高啦,数据库优化,数据结构,存储过程,游标,sql脚本

大家想想看如何实现呢?想下,2分钟后再看哟

1、打开电脑,点击开始,找到Sql Server安装后生成的文件夹,也可以通过搜索Sql Server 找到。2、点击【配置工具】下的【Sql Server 配置管理器】 3、点击左侧菜单SQL Server 服务,右侧会显示

先创建数据

CREATE TABLE dbo.CustomerPhones( CustomerID INT PRIMARY KEY, -- FK Phone1 VARCHAR(32), Phone2 VARCHAR(32), Phone3 VARCHAR(32));INSERT dbo.CustomerPhones (CustomerID, Phone1, Phone2, Phone3)VALUES (1,'705-491-1111', '705-491-1110', NULL), (2,'613-492-2222', NULL, NULL), (3,'416-493-3333', '416-493-3330', '416-493-3339'); select * from dbo.CustomerPhones

查看数据如下:

DataDataUpivot 实现行转列

select * from dbo.CustomerPhones -----数据源 unpivot ( Phone FOR Phones IN (Phone1, Phone2, Phone3) ##Phone1、Phone2、Phone3这些列的结果转为行上的结果,成为一列, ##并且有了新的列名为Phone) up

结果如下:

ResultResult

参考文献:

1.Use SQL Server's UNPIVOT operator to help normalize output

2.SQL之行转列Pivot用法

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对真格学网的支持。

不明白“自动匹配”,你是指知识点ID有默认值?还是指试题ID和知识点ID有关系式?ALTER TABLE table_nameADD column_name datatypeAlter table table_nameADD‘知识点ID’IntSelect"试题ID",‘知识点ID’from '填空题'inner join '单项选择题'ON '填空题'."试题ID"='单项选择题'.‘试题ID’内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • mysql 行转列和列转行实例详解
  • mysql 列转行,合并字段的方法(必看)
  • mssql 数据库表行转列,列转行终极方案
  • sql行转列和列转行代码详解
  • mysql 列转行的技巧(分享)
  • sql行转列、列转行的简单实现
  • mysql列转行以及年月分组实例
  • sql server 里的错误处理(try catch)
  • 浅析sql server 公共表达式的简单应用
  • sql update 更新语句用法(单列与多列)
  • sql学习之case when then else end的用法
  • sql中过滤条件放on和where中的区别详解
  • ado,oledb,odbc,dao,rdo的区别说明
  • 数据库查询性能需注意几点经验
  • sql 左连接和右连接的使用技巧(left join and right join)
  • redis和memcache的区别总结
  • sql union和union all的使用方法
  • sql多表查询.如图,想加一个知识点ID输出列,自动匹配到对应的试题ID.不知道怎么写,求教,在线等.
  • 关于sql输出参数的一个知识点,为什么是这样?
  • SQL基本知识点 100分求
  • sql server 知识点疑惑
  • sql学期项目问题求助 这个报告应该用哪块的知识点做啊
  • 怎么用sql语句删除列
  • javascript里面怎么嵌入可执行的sql语句
  • 数据库 面试时候面试官常会问到哪些知识点,关于Sql server的。
  • SQL2005 怎么启动服务?
  • 关于sql server 现在都主流都用什么版本的?
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全mssqlmysqlmariadboracledb2mssql2008mssql2005sqlitepostgresqlmongodbredisaccess数据库文摘数据库其它首页数据库其它mysql 行转列和列转行实例详解mysql 列转行,合并字段的方法(必看)mssql 数据库表行转列,列转行终极方案sql行转列和列转行代码详解mysql 列转行的技巧(分享)sql行转列、列转行的简单实现mysql列转行以及年月分组实例sql server 里的错误处理(try catch)浅析sql server 公共表达式的简单应用sql update 更新语句用法(单列与多列)sql学习之case when then else end的用法sql中过滤条件放on和where中的区别详解ado,oledb,odbc,dao,rdo的区别说明数据库查询性能需注意几点经验sql 左连接和右连接的使用技巧(left join and right join)redis和memcache的区别总结sql union和union all的使用方法sql join on 用法mysql mysqldump命令使用详解sqlserver、mysql、oracle三种数sql中代替like语句的另一种写法如何让sql运行得更快关于adox的相关知识如何取得一个表的所有字段名用逗sql server下数据库链接的使用方sql server 2005的表分区sql 查询语句积累详解sqlite中的数据类型sqlserver、mysql、oracle三种数据库的优sql left join 命令详解sql prompt--绝好的sql语法提示工具telnet连接操作memcache服务器详解linux下 mysql oracle 简单使用手册sql server 与access、excel的数据转换数据库正规化和设计技巧一个多表查询的sql语句sql小计汇总 rollup用法实例分析
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved