一、PIVOT实例

1. 建表

建立一个销售情况表,其中,year字段表示年份,quarter字段表示季度,amount字段表示销售额。quarter字段分别用Q1, Q2, Q3, Q4表示一、二、三、四季度。

CREATE TABLE SalesByQuarter

(    year INT,    -- 年份

quarter CHAR(2),  -- 季度

amount MONEY  -- 总额

)

2. 填入表数据

使用如下程序填入表数据。

SET NOCOUNT ON

DECLARE @index INT

DECLARE @q INT

SET @index = 0

DECLARE @year INT

while (@index < 30)

BEGIN

SET @year = 2005 + (@index % 4)

SET @q = (CAST((RAND() * 500) AS INT) % 4) + 1

INSERT INTO SalesByQuarter VALUES (@year, 'Q' + CAST(@q AS CHAR(1)), RAND() * 10000.00)

SET @index = @index + 1

END

3、如果我们要比较每年中各季度的销售状况,要怎么办呢?有以下两种方法:

(1)、使用传统Select的CASE语句查询

在SQL Server以前的版本里,将行级数据转换为列级数据就要用到一系列CASE语句和聚合查询。虽然这种方式让开发人员具有了对所返回数据进行高度控制的能力,但是编写出这些查询是一件很麻烦的事情。

SELECT year as 年份

, sum (case when quarter = 'Q1' then amount else 0 end) 一季度

, sum (case when quarter = 'Q2' then amount else 0 end) 二季度

, sum (case when quarter = 'Q3' then amount else 0 end) 三季度

, sum (case when quarter = 'Q4' then amount else 0 end) 四季度

FROM SalesByQuarter GROUP BY year ORDER BY year DESC

(2)、使用PIVOT

由于SQL Server 2005有了新的PIVOT运算符,就不再需要CASE语句和GROUP BY语句了。(每个PIVOT查询都涉及某种类型的聚合,因此你可以忽略GROUP BY语句。)PIVOT运算符让我们能够利用CASE语句查询实现相同的功能,但是你可以用更少的代码就实现,而且看起来更漂亮。

select * from (SELECT year, QUARTER, AMOUNT FROM SalesByQuarter)

PIVOT (count (AMOUNT) FOR QUARTER IN ('Q1' as Q1, 'Q2' as Q2, 'Q3' as Q3, 'Q4' as Q4) ) GROUP BY YEAR;

oracle 数字类型行转列,oracle行转列相关推荐

  1. oracle对象类型_如何创建Oracle类型对象

    oracle对象类型 Today we will learn how to create Oracle Type Object. If you are working on a large proje ...

  2. oracle 对象类型是什么意思,Oracle对象类型 (转)

    Oracle对象类型也有属性和方法. 创建对象类型与创建表很相似,只是实际上不为存储的数据分配空间: 不带方法的简单对象类型: CREATE TYPE type_name as OBJECT ( co ...

  3. oracle数字类型ef映射,Entity Framework 学习中级篇5—使EF支持Oracle9i - ♂风车车.Net - 博客园...

    从Code MSDN上下载下来的EFOracleProvider不支持Oracle9i.但是,目前我所使用的还是Oracle9i.为此,对EFOracleProvider修改了以下,以便使其支持Ora ...

  4. Oracle笔记----oracle数字类型number自增

    创建序列 create sequence seq_student start with 6 increment by 1 maxvalue 500 nominvalue nocycle nocache ...

  5. oracle改类型吗,详解Oracle修改字段类型方法总结

    最近学习了Oracle修改字段类型方法,留做记录. 有一个表名为tb,字段段名为name,数据类型nchar(20). 1.假设字段数据为空,则不管改为什么字段类型,可以直接执行: alter tab ...

  6. oracle数据库的浮点数,Oracle Float类型

    本篇文章帮大家学习Oracle Float类型,包含了Oracle Float类型使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 本教程将向您介绍Oracle FLOAT ...

  7. oracle时间戳表达式,Oracle Timestamp类型

    本篇文章帮大家学习Oracle Timestamp类型,包含了Oracle Timestamp类型使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 在本教程中将学习Orac ...

  8. oracle 创建nchar类型,Oracle NChar类型

    本篇文章帮大家学习Oracle NChar类型,包含了Oracle NChar类型使用方法.操作技巧.实例演示和注意事项,有一定的学习价值,大家可以用来参考. 在本教程中,您将了解Oracle NCH ...

  9. ACCESS常用数字类型的说明和取值范围

    下面是ACCESS常用数字类型的说明和取值范围列表明供参考 数字类型                 范围 Byte(字节)            介于 0 到 255 之间的整型数. Integer ...

最新文章

  1. ESPNet: 自动驾驶领域轻量级分割模型
  2. SpringBoot解决cors跨域问题
  3. Colored Boots
  4. 【wordpress基础教程一】:wordpress简介和安装
  5. linux系统编程之进程(七):system()函数使用【转】
  6. win10使用docker desktop安装k8s一直starting解决方法
  7. 怎么样成为编程技术大牛?
  8. 多个类共同继承一个父类
  9. jquery 弹出遮罩层
  10. 解读戴尔,惠普和思科的“三角关系”
  11. springboot格式化时间
  12. 解决octavia failed to run
  13. 怎么让模糊的数字变清楚_用ps怎么把模糊的字变清晰
  14. LVGL|lvgl v8教程(lvgl中文文档学习教程,开始更新lvgl v8.x文档教程,超详细)
  15. 粉丝文化:抖音广告短视频美妆营销中,男明星比女明星更带货?
  16. gbk英文占几个字节
  17. spin_lock_bh想到的一些事
  18. PyCharm设置中文(官方插件版)
  19. HTTP传输协议详解(传输过程及数据格式详细)
  20. MATLAB可以使用但是使用help函数报错问题的解决

热门文章

  1. ubuntu双系统导致进windows花屏
  2. Python的threadpool模块
  3. 针对Parse error: syntax error, unexpected T_PUBLIC in D:报错提醒
  4. C# 分割字符串方法
  5. [转载] AUML——Schedules and Events
  6. Bash shell脚本练习(一)
  7. c++代码转为go_Go语言学习笔记六--string编码
  8. java 免费cms_开源 免费 java CMS
  9. [转载] Python学习笔记——运维和Shell
  10. scala特性_Scala | 特性应用