电脑软硬件应用网
当前位置: 电脑软硬件应用网 > 设计学院 > 网络编程 > 数据库 > 正文
[图文]UNPIVOT用法详解
UNPIVOT用法详解
2007-11-19 11:07:59  文/风云   出处:电脑软硬件应用网   
  联机帮助中的解释:

  指定输入表从 column_list 中的多个列缩减为名为 pivot_column 的单个列。

  此处也用一个我遇到的例子来说明:

  今天得到一个EXECL文件,格式为:时间,全国,北京,天津......等35个城市列名。下面每行是每个月该城市对应的数据值。

  如下图所示:


  现在要求我转换为时间,地区,数值,这样的格式。想到2005的新功能pivot和unpivot是个不错的选择。但以前从来没用过。第一次用走了此弯路。写出分析,希望对大家有所帮助:

  代码
select [时间],[地区],[数值] from asdfg
unpivot([数值] for [地区] in([全国],[北京],[天津],[石家庄],[太原],[呼和浩特],[沈阳],[大连],[长春],[哈尔滨],[上海],[南京],[杭州],[宁波],[合肥],[福州],[厦门],[南昌],[济南],[青岛],[郑州],[武汉],[长沙],[广州],[深圳],[南宁],[海口],[重庆],[成都],[贵阳],[昆明],[拉萨],[西安],[兰州],[西宁],[银川],[乌鲁木齐])) as U

  说明:

  这里的地区和数值这两个名字可以随便指定。地区 in后面的括号里是要转置的列名。地区是查询结果中所有转换成行的列的列名。数值这个和原表基本上没有什么关系,只是一个列名来存放地区对应的数值。只要保证select后面和unpivot后面一样就OK了。

  结果如下图所示:

  • 上一篇文章:

  • 下一篇文章:
  • 最新热点 最新推荐 相关文章
    Mysql数据库名和表名在不同系统下的…
    mysql全文搜索:sql的写法
    解答SQL不许在视图定义ORDER BY子句…
    数据库海量数据查询与优化
    SQL分组实例使用GROUP BY做示例
    图解Slide Window来做SqlServer性能…
    解决附加SQL Server数据库后出现只读…
    一次SQL调优数据库性能问题后的过程
    使用sql语句分离和附加数据库的方法
    一起探讨如何改善数据库性能瓶颈问题
    关于45IT | About 45IT | 联系方式 | 版权声明 | 网站导航 |

    Copyright © 2003-2011 45IT. All Rights Reserved 浙ICP备09049068号