Oracle部分:

行专列pivot:

SELECT * FROM [StudentScores] /*数据源*/
AS P
PIVOT
(SUM(Score/*行转列后 列的值*/) FOR p.Subject/*需要行转列的列*/ IN ([语文],[数学],[英语],[生物]/*列的值*/)
) AS T

ps:注意第一行“select *  “”中的 * 号 不能换成列名

unpivot:

转换前:

month1 month2 month3 month4
12 13 14 15
SELECT P.num,P.month
FROM
(SELECT month1, month2, month3,month4FROM ProgrectDetail
)T
UNPIVOT
(Num FOR month IN(month1 as '1月', month2 as '2月', month3 as '3月', month4 as '4月' )
) P

转换后效果:

month num
1月 12
2月 13
3月 14
4月 15

sqlserver:

PIVOT函数中必须要包含一个聚合函数,聚合函数分别是:COUNT、SUM、MAX、MIN、AVG,针对不同的使用场景,该选择哪个聚合函数,意义都是不一样的,下面还是举例说明吧!

我建了如下一张销售表并且插入一下测试值:

[sql] view plain copy

  1. CREATE TABLE SalesOrder
  2. (
  3. 门店 VARCHAR(50),
  4. 商品类型 VARCHAR(50),
  5. 销售额 INT
  6. )
  7. INSERT INTO SalesOrder
  8. SELECT  'ShopA','A',round(100+100*rand(),0) UNION ALL
  9. SELECT  'ShopA','A',round(100+100*rand(),0) UNION ALL
  10. SELECT  'ShopA','B',round(200+100*rand(),0) UNION ALL
  11. SELECT  'ShopA','B',round(200+100*rand(),0) UNION ALL
  12. SELECT  'ShopA','B',round(200+100*rand(),0) UNION ALL
  13. SELECT  'ShopA','C',round(1000+100*rand(),0)UNION ALL
  14. SELECT  'ShopB','A',round(100+100*rand(),0) UNION ALL
  15. SELECT  'ShopB','A',round(100+100*rand(),0) UNION ALL
  16. SELECT  'ShopB','B',round(200+100*rand(),0) UNION ALL
  17. SELECT  'ShopB','C',round(1000+100*rand(),0)UNION ALL
  18. SELECT  'ShopB','C',round(1000+100*rand(),0)UNION ALL
  19. SELECT  'ShopC','A',round(100+100*rand(),0) UNION ALL
  20. SELECT  'ShopC','B',round(200+100*rand(),0) UNION ALL
  21. SELECT  'ShopC','B',round(200+100*rand(),0) UNION ALL
  22. SELECT  'ShopC','B',round(200+100*rand(),0) UNION ALL
  23. SELECT  'ShopC','B',round(200+100*rand(),0) UNION ALL
  24. SELECT  'ShopC','C',round(1000+100*rand(),0)UNION ALL
  25. SELECT  'ShopC','C',round(1000+100*rand(),0)

下面我要在PIVOT行转列函数中,使用不同的聚合函数,更直观的统计各个“门店”以及各个”商品类型“的销售情况:

1.SUM:

[sql] view plain copy

  1. SELECT * FROM SalesOrder
  2. PIVOT(SUM(销售额) FOR 商品类型 IN(A,B,C)) AS PVT

统计的是各个门店,各个商品类型的总的销售额。

2.COUNT:

[sql] view plain copy

  1. SELECT * FROM SalesOrder
  2. PIVOT(COUNT(销售额) FOR 商品类型 IN(A,B,C)) AS PVT

统计的是各个门店,各个商品类型的销售量。

3.MAX:

[sql] view plain copy

  1. SELECT * FROM SalesOrder
  2. PIVOT(MAX(销售额) FOR 商品类型 IN(A,B,C)) AS PVT

统计的是各个门店,各个商品类型卖得最贵的销售额。

4.MIN:

[sql] view plain copy

  1. SELECT * FROM SalesOrder
  2. PIVOT(MIN(销售额) FOR 商品类型 IN(A,B,C)) AS PVT

和MAX相反,统计的是最便宜的销售额

5.AVG

[sql] view plain copy

  1. SELECT * FROM SalesOrder
  2. PIVOT(AVG(销售额) FOR 商品类型 IN(A,B,C)) AS PVT

统计的是各个门店,各个商品类型的销售额的平均值

SqlServer中行转列的PIVOT函数相关推荐

  1. Oracle SQL 行转列,pivot函数和unpivot函数

    转:Oracle行转列,pivot函数和unpivot函数 - waynelo - 博客园 (cnblogs.com) pivot函数:行转列函数: 语法:pivot(任一聚合函数 for 需专列的值 ...

  2. oracle pivot函数 后求和,Oracle行转列,pivot函数和unpivot函数

    pivot函数:行转列函数: 语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值)): unpivot函数:列转行函数: 语法:unpivot(新增值所在列的列名 fo ...

  3. Oracle行转列,pivot函数和unpivot函数-配合动态sql很有用

    pivot函数:行转列函数: 语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值)): unpivot函数:列转行函数: 语法:unpivot(新增值所在列的列名 fo ...

  4. oracle行转列和sqlserver行转列语法分析比对

    前言 最近遇到一些老项目,在实施过程中需要切换数据库,遇到了好几处行转列的语法,在网上找了一些资料后,都不能很好的解释分析,下面我将个人在工作中遇到的一些问题以及解决方案详细的描述记录下来,如果有遇到 ...

  5. oracle 总转横函数,详解Oracle行列转换函数-pivot函数和unpivot函数-多智时代

    今天主要介绍一下Oracle行转列及列转行常见函数,下面一起来看看吧! 行列转换 pivot函数:行转列函数 语法:pivot(任一聚合函数 for 需专列的值所在列名 in (需转为列名的值)): ...

  6. SqlServer列转行查询--Pivot函数

    下面来说说SQLServer 中常用Pivot 函数(这里是用的数据库是SQLSERVER,与其他数据库是类似的,大家放心看就好) 让我们先从一个虚构的场景中来着手吧 万国来朝,很多供应商每天都汇报各 ...

  7. pivot sqlserver 条件_SqlServer PIVOT函数快速实现行转列,UNPIVOT实现列转行

    PIVOT函数,行转列 PIVOT函数的格式如下 PIVOT(([聚合列值]) FOR [行转列前的列名] IN([行转列后的列名1],[行转列后的列名2],[行转列后的列名3],.......[行转 ...

  8. mysql行转列函数_一个小知识点-Hive行转列实现Pivot

    前言 传统关系型数据库中,无论是Oracle(11g之后)还是SQLserver(2005之后),都自带了Pivot函数实现行转列功能,本文主要讲述在Hive中实现行转列的两种方式. 传统数据库方式 ...

  9. mysql行转列sql函数_SQL之行转列Pivot函数

    未来的一个月时间中,会总结一系列SQL知识点,一次只总结一个知识点,尽量说明白,下面来说说SQL 中常用Pivot 函数(这里是用的数据库是SQLSERVER,与其他数据库是类似的,大家放心看就好) ...

最新文章

  1. 【Qt】Log4Qt(二)使用
  2. 吴恩达新书《Machine Learning Yearning》中7个实用建议(附论文)
  3. 「干货」谷歌大脑:元学习最新进展与挑战(40 PPT下载)
  4. View4.5测试参考文档7--View Administrator安装、配置、创建桌面池
  5. 从脸部识别到火星机器人,正在改变世界的计算机视觉
  6. iris流程图_如何搭建一个简单的机器学习流水线?
  7. PHP中的static静态变量的使用方法详解
  8. 用设计模式去掉没必要的状态变量 —— 状态模式
  9. 剑指offer刷题(java)|二维数组中的查找|替换空格|leetcode刷题
  10. 图片不显示问题 图片url监测改变问题
  11. 分布式锁的几种实现方式~
  12. XNA中的中文输入(一)
  13. linux 查看端口占用命令 亲测可用
  14. 当游戏遇到区块链之链游经济系统思考
  15. linux b类地址设24位掩码,子网掩码的设置方法和作用
  16. win7休眠设置在哪里_电脑休眠好不好,在哪里开启?
  17. EasyAR 插件使用简介
  18. shineblink HC-SR505人体红外感应传感器
  19. Caj转pdf有哪些不收费的转换方法?
  20. 第二十四章 面向对象------属性

热门文章

  1. 高校学院计算机实验室管理系统概述,院实验中心-北京邮电大学 计算机学院(国家示范性软件学院)...
  2. photoshop文件巨大_如何手动清除Photoshop的大量临时文件
  3. python在windows的cmd中打印彩色文字
  4. 如何为你的测试环境添加假数据
  5. Python 在图片上画点、圆和矩形实例
  6. “不专业”的你怎么学习平面设计原理
  7. 银联支付(WAP支付)
  8. 一键登录 助燃激情赛事
  9. C++:函数对象(函数符)
  10. 基于Hadoop的豆瓣电影的数据抓取、数据清洗、大数据分析(hdfs、flume、hive、mysql等)、大屏可视化