原文出处:[SQL指令]使用 PIVOT 和 UNPIVOT,「扭转」查询的结果。

http://www.dotblogs.com.tw/mis2000lab/archive/2010/12/24/ms_sql_pivot_unpivot.aspx

假设我有一个 Table,记录了每一个月、各分店的销售金额(或是销售量)

这样的 数据库 Table如果要作年度的汇总运算,

很可能查出来的结果会是这个样子。

年度

销售量

2010

100,000

2009

80,000

2008

50,000

毕竟,Table里面的每一列记录,都是横的(一列、一列)

透过 Group by或是 Count()计算之后,成果也必然是这样。

但,有时候要产生这样的报表,就很伤脑筋了。

偏偏大部分的 User满喜欢这种输出成果。

2008

2009

2010

50,000

80,000

100,000

如果您听不懂我的叙述,请看以下的「第一篇 推荐文章(张小呆 的大作)」,有图片解说。

新版本的 MS SQL 2005开始,多了新方法来处理这样「数据表的结果 "逆转"」

简单的说,把原本(上图一)的年度「字段(Column)」,扭转(转向)成一列「资料列 (Row / 一笔纪录)」

原厂的说明文件如下:http://msdn.microsoft.com/zh-tw/library/ms177410.aspx

   使用 PIVOT UNPIVOT

您可以使用 PIVOT 和 UNPIVOT 关系运算子,将资料表值表达式变更为另一个数据表。PIVOT 会将表达式内一个数据行中的唯一值转成输出中的多个数据行,以旋转数据表值表达式,然后依据最终输出的需要,对其余的任何数据行值执行必要的汇总。UNPIVOT 执行的作业则与 PIVOT 相反,它会将数据表值表达式旋转为数据行值。

Sorry......上面的说明的确很像火星文

但有三篇文章讲得更浅显易懂(我推荐这三篇文章):

张小呆   http://www.dotblogs.com.tw/dc690216/archive/2010/02/04/13478.aspx......图文并茂,很赞喔!

Rely1020  http://rely1020.blog.ithome.com.tw/post/1606/39111......把语法与理论讲得很清楚。

看完上面两篇文章的解释,您多看一个范例(练习、比对一下),就会懂了。

黑暗执行绪  http://blog.darkthread.net/blogs/darkthreadtw/archive/2007/07/20/tips-using-pivot-in-sql-2005.aspx

如果您不想使用(或是无法使用这种方法的话)

这本书的附录 A也有另外一种解法。请看文章标题 -- 「想把横向列数据改成多栏数据时,该怎么作?」页数533

但我觉得这方法不如PIVOT 和 UNPIVOT好用

    书名:SQL语法范例辞典(旗标出版社)

    作者:朝井

另外,杨志强老师在 旗标出版社推出的「T-SQL 实战学堂」一书,

里面的 Ch .6-4节(数据合并与转向)也有解说 PIVOT 和 UNPIVOT。

转载于:https://www.cnblogs.com/mis2000lab/archive/2010/12/27/ms_sql_pivot_unpivot.html

[SQL指令]使用 PIVOT 和 UNPIVOT,「扭转」查询的结果。相关推荐

  1. SQL 2005中pivot and unpivot的用法

    .Pivot的用法体会: 语句范例: select PN,[2006/5/30] as [20060530],[2006/6/2] as [20060602] from consumptiondata ...

  2. SQL Server 2008中的Pivot和UnPivot

    SQL Server 2008中SQL应用系列--目录索引 今天给新成员讲解PIVOT 和 UNPIVOT示例,顺便整理了一下其用法.这是自SQL Server 2005起提供的新功能. 官方示例:h ...

  3. PIVOT 和 UNPIVOT 命令的SQL Server版本

    I:使用 PIVOT 和 UNPIVOT 命令的SQL Server版本要求 1.数据库的最低版本要求为 SQL Server 2005 或 更高 2.必须将数据库的兼容级别设置为 90 或 更高 3 ...

  4. pivot unpivot_静态和动态SQL Pivot和Unpivot关系运算符概述

    pivot unpivot In this article, we'll walk-through the SQL Pivot and SQL Unpivot operators and how th ...

  5. SQL 行转列 列转行 Oracle转置函数函数pivot、unpivot 解决wm_concat 没有排序

    https://www.cnblogs.com/mellowsmile/p/4642306.html HH 终风且暴,顾我则笑,谑浪笑敖,中心是悼. 终风且霾,惠然肯来,莫往莫来,悠悠我思. 博客园 ...

  6. 数据透视表与mysql_通过sql做数据透视表,数据库表行列转换(pivot和Unpivot用法)(一)...

    在mssql中大家都知道可以使用pivot来统计数据,实现像excel的透视表功能 一.MSsqlserver中我们通常的用法 1.Sqlserver数据库测试 ---创建测试表 Create tab ...

  7. SQL使用 PIVOT 和 UNPIVOT

    可以使用 PIVOT 和 UNPIVOT 关系运算符将表值表达式更改为另一个表.PIVOT 通过将表达式某一列中的唯一值转换为输出中的多个列来旋转表值表达式,并在必要时对最终输出中所需的任何其余列值执 ...

  8. oracle unpivot 索引_oracle 11g中的pivot和unpivot转换操作

    对于pivot和unpivot这个Oracle 11g的新功能一直就想总结一下,正好赶上论坛中有很多人会提问相关的问题,于是利用空闲时间翻译了一篇相关的网络文章.链接如下: ITPuber:Luise ...

  9. Master-Detail(主表明细),确认可以出货的SQL指令 -- Not Exists

    这是我文章的备份,原文请看: http://www.dotblogs.com.tw/mis2000lab/archive/2011/08/18/master_detail_finish_and_shi ...

最新文章

  1. 嵌入式系统一次EMMC测试的体会及错误分析过程
  2. session的使用
  3. python dns server开源列表 TODO
  4. spring一: 容器以及bean生命周期
  5. .Net Validator验证框架 [ .Net | Validator Framework | Attribute ]
  6. 【项目管理和构建】——Maven简介(一)
  7. react --- Hook的使用
  8. 2020蓝桥杯省赛---java---B---7(单词分析)
  9. mysql innodb 间隙锁_MySQL中InnoDB的间隙锁问题
  10. Arcgis for js开发之直线、圆、箭头、多边形、集结地等绘制方法
  11. yum安装指定版本php,如何通过yum安装指定版本的PHP
  12. 曾鸣:为什么要让「听得见炮火的士兵」做决定?| 干货
  13. android遥控器:控制电脑上的暴风影音播放(C#作为服务端)
  14. Win7/8/10系统下Protel 99 SE不能添加元件库 File is not recognized
  15. 3DES实现加密算法
  16. Win32反汇编(三)深层次的了解各种转移指令:IF语句有符号与无符号跳转
  17. Servlet异常处理器
  18. 2022考研复习第八周
  19. HHDBCS的快捷命令使用
  20. https安全证书提示证书风险怎么办

热门文章

  1. python【力扣LeetCode算法题库】面试题40- 最小的k个数
  2. android 轮播 getWith,NavigationTermSet.GetWithNewView 方法
  3. java从磁盘读取图片_java 怎样从磁盘读取图片文件
  4. 鸿蒙系统的逻辑,鸿蒙系统逻辑近似苹果iOS13?这华为在搞什么?
  5. python sorted key=str.lower_Python——sorted()函数
  6. python汉化之后好用吗_买了《Python学习手册(中文第4版)》后悔了
  7. 开发日记-20190514 关键词 汇编语言(七)
  8. 矩阵管理——本质是职能分工,例如所有部门都执行财务部门制定的财务制度而不会各自为政...
  9. linux tcpdump 抓包
  10. navicat 连接 mogodb 报错 requires authentication